2016-05-04 4 views
1

У меня есть страница Классический ASP (как ниже),Как сделать параметр классического ASP querystring не проходить код. Проблема безопасности

/Test.asp?url="%0a%0dmsgbox("Test%20XSS")%0a%0ddim%20test%0a%0dtest=" 

Мы передаем URL в качестве запроса string.But, когда мы проезжаем выше параметр, он отображает сообщение (из-за MsgBox) перед страница загружается.

Есть ли способ остановить выполнение скрипта в параметре запроса? защитите строку запроса.

Заранее благодарим за помощь.

+0

Да, не вводите параметры запроса в сценарий клиентской стороны, не дезинфицируя их в первую очередь. – Lankymart

+0

Вам необходимо опубликовать соответствующий код, который «выполняет» URL. Это не «выполнение» само по себе. –

+0

На самом деле, я просто добавлял нормальный параметр в строку запроса (как показано ниже). /Test.asp?url=google Но если кто-то делает URL-адрес похожим на тот, который я показываю в сообщении, на странице отображается окно сообщения. Я думаю, что моя страница не должна показывать чужое сообщение. – PraneethArnepalli

ответ

1

Если вы выводили на HTML, используйте Server.HTMLEncode.

<%=Server.HTMLEncode(Request.QueryString("url")) %> 

Однако, похоже, вы выводите на JavaScript.

Лучшим способом было бы не делать этого. See my question and the answer here, но в основном используют data- атрибуты, так что вы можете использовать код, приведенный выше, а затем выловить значение с помощью JavaScript:

<div id="dataExample" data-url="<%=Server.HTMLEncode(Request.QueryString("url")) %>" /> 

Отъезд OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet для получения дополнительной информации. У этого также есть другой способ сделать это, но он намного более сложный, который всегда обратный к безопасности. Это включает кодирование с использованием формата \x00. Однако, поскольку это связано с написанием какого-либо пользовательского кода, это означает, что вы не можете полагаться на какие-либо встроенные функции, что означает, что он подвержен ошибкам. Я бы очень рекомендовал подход HTML.

+0

Спасибо за ответ. Я пробовал HTMLEncode, и он не показывал никаких сообщений на этой странице (что технически решило мою проблему), но на этой странице не было сообщений об ошибках. есть ли способ, которым мы все еще можем запустить код? потому что я написал код для исключения. и в настоящее время он не выполняется. – PraneethArnepalli

+0

Измените свой вопрос, чтобы включить соответствующий код. – SilverlightFox

 Смежные вопросы

  • Нет связанных вопросов^_^