2010-04-05 2 views
2

У нас есть библиотека управления файлами cookie, которая пишет файл cookie, содержащий некоторую конфиденциальную информацию, зашифрованную с помощью Rijndael. Файл cookie шифрует и дешифрует в модульных тестах (используя Moq), отлично работает для веб-приложений MVC, но при вызове с веб-сайта ASP.net 2.0 cookie не может быть расшифрован. Msgstr "Заполнение недействительно и не может быть удалено".Недопустимое заполнение на ASP 2.0 cookie, MVC выглядит нормально

Мы уверены, что значение cookie действительно, потому что мы тестировали его 10 000 раз со случайными данными в модульном тесте. Есть что-то о том, что делает ASP.NET 2.0, когда он читает и записывает файл cookie, который вызывает проблемы.

Должно быть получено. Какие-либо предложения?

ответ

0

Hex-encode данные перед хранением в cookie, поскольку шестнадцатеричные символы действительны для значений cookie. (Base64 не является безопасным как есть, но вы можете заменить символы + =/на _-., Например.) Также обратите внимание, что файлы cookie имеют максимальную длину, хотя я забыл, что этот предел является нарушением.

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

+0

Перемещение в шестнадцатеричный, похоже, решило проблему, хотя я не понимаю, почему asp.net mvc был в порядке с файлом cookie, но веб-формы не были. Редко, случайные проблемы трудно отлаживать! Спасибо! –