Я пытаюсь включить шифрование состояния сервера Всегда в качестве меры безопасности для моего веб-сайта ASP.NET 3.5, размещенного в IIS6.Мы отключили viewstate, но все еще видим некоторое «controlstate» в этой строке.В тестовой среде я могу просто установить следующее в web.config и больше не могу с помощью base64 декодировать viewstate в полу-открытый текст:
<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">
Я даже добавилследующий (генерируется генератором машинного ключа ) в machine.config и все еще шифрует штрафа состояния просмотра на моем тестовом сервере:
<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />
Моя не тестовая среда неКажется, я не могу подобрать вышеуказанные изменения, поскольку я всегда могу base64 декодировать состояние просмотра в обычный текст с указанными выше настройками.Я всегда делаю сброс после внесения каких-либо изменений.
Некоторая информация о моем не тестовом веб-сервере:
- Web Farm / Load Balanced (но только один сервер готов для тестирования прямо сейчас)
- Sql Session State (изначально для этого требовался machinekey в machine.config)
- machine.config: развертывание retail = "true"
Может кто-нибудь предложитьгде искать дополнительные настройки, которые могут помешать шифрованию asp.net viewstate?
EDIT: теперь на моем тестовом сервере iis я не могу отменить настройку viewStateEncryptionMode, так как она шифрует viewstate, даже если я установил его на «Never»."и ни один из моих других сайтов, похоже, не воспользовался этим параметром.Где я могу посмотреть, где это свойство переопределяется?Есть ли кеш, где хранится этот параметр, который необходимо очистить, кроме того, что будет сделано, когда я буду iisreset / stop www service / touch machine.config?
РЕДАКТИРОВАТЬ ЗАКЛЮЧИТЕЛЬНО: После нескольких дней изучения файлов конфигурации я отказалсяи реализовал это с помощью кода.У меня уже был модуль безопасности, который прикреплялся к событиям страницы, поэтому в Page_Load я добавил: Page.RegisterRequiresViewStateEncryption ();
Мне бы очень хотелось узнать, что мешает этому параметру сразу же подхватиться на IIS6.Когда я запускаю cassini локально, если я устанавливаю viewStateEncryptionMode на «Always» через узел страниц, я сразу же вижу, как он кодирует состояние просмотра, и отображает дополнительное скрытое поле с id = "__ VIEWSTATEENCRYPTED".Когда я установлю его на «Никогда», я сразу же увижу, что шифрование отключено.Если я внесу точно такое же изменение в веб-сайт на своем веб-сайте IIS6, это не будет иметь немедленного эффекта, но если я позволю настройке остаться там, это в конечном итоге вступит в силу.Я бы остановил / запустил службу www, сбросил iis, очистил временный кеш ASPNET, но я не знаю, что еще попробовать?Надеюсь, что этот пост может ROT на какое-то время, и кто-то в будущем увидит то же поведение, которое я испытал, и мы сможем это выяснить!