Шифрование в веб-службах С#
Я ищу простой способ зашифровать мое сообщение с мылом в веб-службе С#.
Я смотрел WSE 3.0, но, похоже, Microsoft отказалась от поддержки, и поэтому его не просто использовать.
Кажется, WCF мог быть вариантом, но я предпочитаю не обновляться с .NET 2.0.
Любой простой, простой метод шифрования?
Ответы
Ответ 1
Я думаю, что это может помочь; в прошлом году мы использовали это для сжатия веб-сервисов, и он выполнялся очень хорошо, я считаю, что его можно улучшить с помощью классов шифрования;
Создание пользовательских расширений SOAP - Расширение сжатия
Ответ 2
Все, что вы делаете для обеспечения "шифрования", которое не использует SSL/TLS, скорее всего, будет уязвимым. Теперь вы должны спросить себя, стоит ли записывать часы, которые вы могли бы потратить на функции на мешке безопасности с резиновой курицей? Возможно, это так.
.NET API, такие как DPAPI и Win32 crypt32 API, позволяют легко шифровать капли данных статическими ключами. Но как ваши клиенты получат ключи? Любой установленный клиент SOAP должен либо сжать ключ в свою конфигурацию, либо получить его через небезопасный Интернет.
Это проблема SSL/TLS для вас; танец, который вы делаете с сертификатами TLS, решает проблему передачи открытых ключей по ненадежным каналам.
Ответ 3
Возможно, я наивна, но заставляя общение проходить через https приемлемо? Я разрабатываю веб-сайт услуг, которые работают на 2.0, и успех при получении IIS применять https в виртуальном каталог.
Это был бы самый простой способ пойти возможно, но, к сожалению, я не иметь контроль над IIS конфигурации и не может гарантировать что он может запускать https.
В этом случае, пожалуй, лучшим вариантом является либо индивидуальная кодировка частей SOAP-сообщений (в конце концов, вам может не понадобиться шифровать все сообщение - только некоторые чувствительные поля?), или вы можете выберите HttpModule для перехвата всех сообщений и работы с содержимым. В любом случае вам, вероятно, придется предоставить пользовательские прокси.
Ответ 4
Возможно, я наивна, но заставляю общение через https быть приемлемым?
Я разрабатываю веб-службы, которые работают на 2.0, и добились успеха, просто запустив IIS для принудительного использования https в виртуальном каталоге.
В качестве альтернативы, или, кроме того, вы можете проверить свойство HttpRequest.IsSecureConnection.
Ответ 5
Мы фактически используем WSE 3.0 в наших веб-сервисах, которые изначально были разработаны до WCF. Для обеспечения безопасности используется система на основе токенов SAML, построенная на классах криптографии в System.Security.
Это работает очень хорошо. Однако этот метод ни в коем случае не является "простым".
Ответ 6
Вы можете использовать шифрование параметров в С#, используя расширение System.Security.Cryptography.
Шифрование ваших параметров и их дешифрование будут сложнее, но гораздо более безопасными.
Как: Шифровать и расшифровывать данные с помощью симметричного ключа (Rijndael) (С#/VB.NET)
Я использую этот aproach для веб-сервиса OTP (один раз пароль), и он отлично работает для меня.