Если вы делаете это, чтобы доверять коду, который вы отправили в браузер клиента, измените направление. Вы действительно не хотите доверять пользовательскому вводу, который включает в себя вызовы от js, которые вы отправили в браузер. Логика на сервере должна быть сделана так, чтобы через нее ничего не случилось. Тем не менее, asp.net использует поле со знаком, вы можете пойти по этому пути, если это абсолютно необходимо.
Расширяем немного:
Asp.net защищает от взлома состояние представления, которое отправляется как скрытое HTML-поле (в зависимости от конфигурации). Я уверен, что есть ссылки лучше, но по крайней мере это упомянуто на этом: http://msdn.microsoft.com/en-us/library/ms998288.aspx
проверка. Это определяет хеширование
алгоритм, используемый для генерации HMAC для
сделать ViewState и формы
аутентификационные билеты
Этот атрибут также используется для указания
алгоритм шифрования, используемый для
ViewState шифрование. Этот атрибут
поддерживает следующие параметры:
- SHA1 – SHA1 используется для защиты от подделки
ViewState и, если настроено,
формирует тикет аутентификации. Когда SHA1
выбран для проверки
атрибут, используемый алгоритм
HMACSHA1.
Ссылка на класс .net для этого алгоритма http://msdn.microsoft.com/en-us/library/system.security.cryptography.hmacsha1.hmacsha1.aspx.
Обновление 2:
Для защиты от несанкционированного доступа вы хотите подписать данные (не шифровать их). Обратите внимание, что при использовании криптографии в целом вы должны избегать использования собственной реализации или алгоритма. Что касается шагов, я бы придерживался:
- Назначение токена переменной JavaScript (сгенерированной на стороне сервера). Вы включаете информацию для идентификации запроса и точную дату и время, когда он был выполнен. Подпись будет проверять приложение на стороне сервера, выдавшее данные.
- При необходимости укажите двойную отправку.
Тем не менее, причина, по которой asp.net по умолчанию проверяет состояние представления, заключается в том, что разработчики полагаются на информацию, поступающую туда, которая обрабатывается только приложением, когда они не должны. То же самое относится и к вашему сценарию, не полагайтесь на этот механизм. Если вы хотите оценить, может ли кто-то что-то сделать, используйте аутентификацию + авторизацию. Если вы хотите знать, что вызов ajax отправляет только допустимые параметры, проверьте их. Не раскрывайте API на уровне детализации, отличном от того, на котором вы можете соответствующим образом авторизовать действия. Этот механизм - просто дополнительная мера, если что-то поскользнулось, а не реальная защита.
Ps. с HMACSHA1 выше, вы можете создать его с помощью фиксированного ключа