Я пытаюсь включить шифрование состояния просмотра Всегда в качестве меры безопасности для моего веб-сайта ASP.NET 3.5, размещенного в IIS6. У нас отключено состояние просмотра, но в этой строке все еще присутствует "состояние управления". В тестовой среде я могу просто установить следующее в web.config, и я больше не могу base64 декодировать состояние просмотра в полупрозрачный текст:
Я даже добавил следующее (сгенерировано генератором машинных ключей ) в machine.config и все еще шифрую состояние просмотра на моем тестовом сервере:
Моя не тестовая среда, похоже, не улавливает вышеупомянутые изменения, так как я всегда могу base64 декодировать состояние просмотра в простой текст с указанными выше настройками. Я всегда сбрасываю после внесения каких-либо изменений.
Некоторая информация о моем не тестовом веб-сервере:
Кто-нибудь может предложить, где искать дополнительные настройки, которые могут помешать шифрованию состояния просмотра asp.net?
РЕДАКТИРОВАТЬ: Теперь на моем тестовом сервере iis я не могу отменить параметр viewStateEncryptionMode, поскольку он шифрует состояние представления, даже когда я установил его на «Никогда», и ни один из моих других веб-сайтов, похоже, не использует этот параметр. Где я могу посмотреть, где это свойство переопределяется? Есть ли какой-нибудь кеш, в котором хранится этот параметр, который необходимо очистить, кроме того, что будет сделано, когда я iisreset / stop www service / touch machine.config?
EDIT FINAL: После нескольких дней изучения файлов конфигурации я отказался и реализовал это через код. У меня уже был модуль безопасности, который прикреплялся к событиям страницы, поэтому в Page_Load я добавил: Page.RegisterRequiresViewStateEncryption ();
Мне бы очень хотелось узнать, что мешает немедленному использованию этого параметра в IIS6.Когда я запускаю cassini локально, если я устанавливаю viewStateEncryptionMode на «Always» через узел страниц, я сразу вижу, что он кодирует состояние просмотра и отображает дополнительное скрытое поле с id = «__ VIEWSTATEENCRYPTED». Когда я затем устанавливаю его на «Никогда», я сразу вижу, что шифрование отключается. Если я сделаю такое же точное изменение веб-сайта на моем веб-сайте, размещенном на IIS6, это не повлияет немедленно, но если я оставлю настройку там, она в конечном итоге вступит в силу. Я бы остановил / запустил службу www, сбросил iis, очистил временный кеш ASPNET, но я не знаю, что еще попробовать? Надеюсь, этот пост может на какое-то время измениться, и кто-то в будущем увидит то же поведение, что и я, и мы сможем в этом разобраться!