Я работал над приложением asp.net, которое прошло проверку защиты ведущей компанией по обеспечению безопасности, и я изучил этот легкий прием предотвращению менее известной, но важной уязвимости системы обеспечения безопасности.
ниже объяснения от: http://www.guidanceshare.com/wiki/ASP.NET_2.0_Security_Guidelines_-_Parameter_Manipulation#Consider_Using_Page.ViewStateUserKey_to_Counter_One-Click_Attacks
Рассматривает использование Страницы. ViewStateUserKey для противостояния нападениям с одним щелчком. Если Вы аутентифицируете свои вызывающие стороны и используете ViewState, устанавливаете Страницу. Свойство ViewStateUserKey в обработчике событий Page_Init для предотвращения нападений с одним щелчком.
void Page_Init (object sender, EventArgs e) {
ViewStateUserKey = Session.SessionID;
}
Набор свойство к значению, которое Вы знаете, уникально для каждого пользователя, таково как идентификатор сессии, имя пользователя или идентификатор пользователя.
нападение одного щелчка А происходит, когда взломщик создает Веб-страницу (.htm или .aspx), который содержит скрытое поле формы, названное __ СОСТОЯНИЕ ОТОБРАЖЕНИЯ, которое уже заполнено данными ViewState. ViewState может быть сгенерирован от страницы, которую взломщик ранее создал, такие как страница магазинной тележки с 100 объектами. Взломщик соблазняет не подозревающего пользователя в просмотр к странице, и затем взломщик заставляет страницу быть отправленной на сервер, где ViewState допустим. Сервер не имеет никакого способа знать что ViewState, порожденный от взломщика. Проверка ViewState и HMACs не противостоят этому нападению, потому что ViewState допустим, и страница выполняется под контекстом защиты пользователя.
установка By свойство ViewStateUserKey, когда обзоры взломщика к странице для создания ViewState свойство инициализируется к его имени. Когда законный пользователь отправляет страницу серверу, она инициализируется с именем взломщика. В результате сбои проверки ViewState HMAC и исключение сгенерированы.
You'd need to use a page property: http://grails.org/doc/1.1.1/ref/Tags/pageProperty.html
Then pass it into the render tag using the model param.
cheers
Lee
Я все время делаю этот узор. На мой взгляд, я могу прикрепить свойство к странице либо вручную, либо с помощью тега параметра в представлении, которое я визуализирую. Это не описано в руководстве пользователя Grails, но очень удобно.
<parameter name="foo" value="bar" />
Затем я мог бы получить доступ к свойству page с помощью тега pageProperty .
<g:set var="activeNavItem" value="${pageProperty(name: 'page.foo')}"/>
Макет вообще не должен обрабатывать эту переменную: -)