Предотвращение Javascript в URL-атаках (asp.net)

Я видел множество предложений по предотвращению атак с использованием межсайтовых сценариев, но я не спрашиваю о проверке ввода формы. Как бы я предотвратил что-то вроде этого:

javascript:(function(i,j){with(document){for(i=0;i<forms.length;++i){with(forms[i]){for(j=0;j<elements.length;++j){elements[j].disabled=false}}}}})()

от вставки в URL? Этот код активирует все элементы формы на странице, если добавить их в URL-адрес. Так что, если вы отключите определенные кнопки из-за разрешений или чего-то еще, тогда все эти кнопки станут активными.

Должен ли я просто анализировать URL-адрес и проверять ключевое слово Javascript?


person Drakarian    schedule 31.08.2009    source источник


Ответы (2)


Нет. В любом случае, вы не можете, так как он не отправляется на сервер.

Это просто JavaScript, выполняемый локально самим пользователем. Это ничего не должно значить для вас. Безопасность вашей системы никогда не должна зависеть от JavaScript на стороне клиента, вся ваша аутентификация и т. д. должна выполняться на стороне сервера.

person Noon Silk    schedule 31.08.2009
comment
Да, немного подумав, я пришел к такому же выводу. Сайт не выполняет обратную передачу, поэтому нет возможности проверить URL-адрес. - person Drakarian; 01.09.2009

Ключ в том, чтобы не слишком беспокоиться об этом на стороне клиента. На стороне сервера вы должны быть пуленепробиваемыми. Не предполагайте, например, что только потому, что вы назвали свои входные данные для формы такими же, как имена столбцов вашей базы данных, вы можете просто перебирать Request.Form и сохранять все полученные данные. Вы должны убедиться, что обрабатываете только те входные данные, которые ожидаете, и проверять их на тип данных и диапазон, а также учитывать разрешения пользователя на изменение данного поля.

Таким образом, пользователь может отправлять все, что захочет, вы будете обрабатывать и принимать действительные данные только на стороне сервера.

person D'Arcy Rittich    schedule 31.08.2009