Эта мысль приходила мне в голову много раз в течение недели, когда я играл с этим. Я постоянно проверял это, и когда разочаровался, перешел на мой dev-сервер, который не сбалансирован по нагрузке. НО у вас есть правильная точка зрения, и важно, чтобы все в среде с балансировкой нагрузки понимали

аюсь включить шифрование ViewStateВсегда в качестве меры безопасности для моего веб-сайта ASP.NET 3.5, размещенного в IIS6. Мы отключили viewstate, но все еще видим некоторое «controlstate» в этой строке. В тестовой среде я могу просто установить следующее в web.config и больше не могу с помощью base64 декодировать viewstate в полу-открытый текст:

<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">

Я даже добавил следующее (созданныйгенератор машинных ключей) к machine.config и все еще прекрасно шифрует viewstate на моем тестовом сервере:

<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?

РЕДАКТИРОВАТЬ: Теперь на моем тестовом сервере iis я не могу отменить настройку viewStateEncryptionMode, поскольку она шифрует состояние просмотра, даже когда я установил для него значение «Никогда», и ни один из моих других веб-сайтов, похоже, не захватил эту настройку. Где я могу посмотреть, где это свойство переопределяется? Есть ли кеш, где хранится этот параметр, который необходимо очистить, кроме того, что будет сделано, когда я iisreset / stop www service / touch machine.config?

РЕДАКТИРОВАТЬ ФИНАЛ: После нескольких дней изучения конфигурационных файлов я сдался и реализовал это с помощью кода. У меня уже был модуль безопасности, который прикреплялся к событиям страницы, поэтому в Page_Load я добавил: Page.RegisterRequiresViewStateEncryption ();

Мне бы очень хотелось узнать, что мешает установке этого параметра сразу же на IIS6. Когда я запускаю cassini локально, если я устанавливаю viewStateEncryptionMode на «Always» через узел страниц, я сразу же вижу, как он кодирует состояние просмотра, и отображает дополнительное скрытое поле с id = "__ VIEWSTATEENCRYPTED". Когда я установлю его на «Никогда», я сразу же увижу, что шифрование отключено. Если я внесу точно такое же изменение в веб-сайт на своем веб-сайте IIS6, это не будет иметь немедленного эффекта, но если я позволю настройке остаться там, это в конечном итоге вступит в силу. Я бы остановил / запустил службу www, сбросил iis, очистил временный кеш ASPNET, но я не знаю, что еще попробовать? Надеюсь, что этот пост может ROT на какое-то время, и кто-то в будущем увидит то же поведение, которое я испытал, и мы можем это выяснить!

Ответы на вопрос(3)

Ваш ответ на вопрос