Назад | Перейти на главную страницу

следует ли использовать один и тот же машинный ключ в средах разработки и производства?

Все наши производственные серверы имеют одинаковый машинный ключ. Однако наши системы производства и разработки не имеют одинаковых машинных ключей. Получаем кучи (примерно по одному в секунду) исключений вида

System.Security.Cryptography.CryptographicException: Padding is invalid and cannot be removed.
at System.Security.Cryptography.RijndaelManagedTransform.DecryptData()
at System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock()
at System.Security.Cryptography.CryptoStream.FlushFinalBlock()
at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData()
at System.Web.UI.Page.DecryptStringWithIV()...

Развертываем код после сборки, исходный код .cs отсутствует в продакшене. aspx файлы присутствуют при производстве.

(Стоит ли размещать в Stack Overflow? Это не вопрос кодирования.)

Экспериментируя, мы обнаружили, что использование значения ключа машины разработчика приводит к исчезновению исключений. Есть ли у кого-нибудь документация, которую я могу использовать с командой безопасности о необходимости идентичных ключей во время компиляции и развертывания?

Ответ - нет.

Причина того, что одни и те же машинные ключи не используются, заключается в том, что разработчики не должны видеть секретные ключи производственной среды. Если у вас есть бывшие сотрудники или внешние консультанты, вы не можете гарантировать, что они не распространят код разработки где-нибудь. В чужих руках ключи упрощают атаку на серверы.

Вот хорошая ссылка.