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