Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA5364 |
| Заголовок | Не используйте нерекомендуемые протоколы безопасности |
| Категория | Безопасность |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Нет |
| Применимые языки | C# и Visual Basic |
Причина
Это правило срабатывает при выполнении любого из следующих условий:
- Использовалась ссылка на устаревшее значение System.Net.SecurityProtocolType.
- Переменной SecurityProtocolType было назначено целочисленное значение, представляющее устаревшее значение.
Нерекомендуемые значения:
- Ssl3
- Tls
- Tls10
- TLS 1.1
Описание правила
Протокол безопасности транспортного уровня (TLS) защищает общение между компьютерами, чаще всего при помощи протокола защищённой передачи гипертекста (HTTPS). Более ранние версии протокола TLS менее безопасны, чем TLS 1.2 и TLS 1.3, и, скорее всего, будут подвержены новым уязвимостям. Избегайте использования более ранних версий протокола, чтобы снизить риск. Рекомендации по выявлению и удалению устаревших версий протоколов см. в статье Решение проблемы с TLS 1.0, выпуск 2.
Устранение нарушений
Не используйте устаревшие версии протокола TLS.
Когда лучше отключить предупреждения
Это предупреждение можно отключить в следующих случаях:
- ссылка на устаревшую версию протокола не используется для включения устаревшей версии;
- необходимо подключиться к устаревшей службе, которую нельзя обновить для использования безопасных конфигураций TLS.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5364
// The code that's violating the rule is on this line.
#pragma warning restore CA5364
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5364.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Примеры псевдокода
Нарушение правил именования перечислений
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5364 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5364 violation
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
End Sub
End Class
Нарушение целочисленного значения
using System;
using System.Net;
public class ExampleClass
{
public void ExampleMethod()
{
// CA5364 violation
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 768; // TLS 1.1
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' CA5364 violation
ServicePointManager.SecurityProtocol = CType(768, SecurityProtocolType) ' TLS 1.1
End Sub
End Class
Решение
using System;
using System.Net;
public class TestClass
{
public void TestMethod()
{
// Let the operating system decide what TLS protocol version to use.
// See https://learn.microsoft.com/dotnet/framework/network-programming/tls
}
}
Imports System
Imports System.Net
Public Class TestClass
Public Sub ExampleMethod()
' Let the operating system decide what TLS protocol version to use.
' See https://learn.microsoft.com/dotnet/framework/network-programming/tls
End Sub
End Class
Связанные правила
CA5386: избегайте жесткого кодирования значения SecurityProtocolType
CA5397: не используйте устаревшие значения SslProtocols
CA5398: избегайте жестко закодированных значений SslProtocols