2011-07-18 1 views
1

Мой проект реализует поиск (по умолчанию HTML) и перенаправляет на страницу поиска (ASPX), и я использую строку запроса для передачи значения поиска. Я получаю ошибку сервера potentially dangerous Request.QueryString value, когда язык установлен на неанглийский (например, тайский, кириллический).Обработка потенциально опасной строки запроса

Есть ли способ справиться с этим со стороны клиента? В настоящее время я не могу найти способ справиться с этим из самой страницы (Page_Load, Page_PreInit не запускается).

Вот код, который я использовал для перенаправления:

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + searchString; 
} 
+0

Вы пробовали шифрование строки запроса и дешифрование на перенаправленная страница? – TheGeekYouNeed

+0

Пока нет, я отправил свой код для перенаправления на страницу поиска. – KaeL

ответ

2

Добавление validateRequest="false" к вам .Net странице или файл Web.config

ИЛИ

вы можете кодировать URL варов, добавив encodeURIComponent:

function Search() { 
    var searchString = document.getElementById('txtSearch').value; 
    location.href = "/Search.aspx?search=" + encodeURIComponent(searchString); 
} 
+0

Спасибо за ответ Marc – KaeL

2

Если данные будет выглядеть примерно как код вы также, возможно, придется отключить эту проверку; но тогда вам нужно быть действительно уверен в вашей обработке кода, в частности, избегая атак XSS и SQL-инъекций. Вы должны быть в состоянии установить в ASPX validateRequest=false отключить на основе каждой страницы:

<%@ Page validateRequest="false" ... 

или глобально в web.config, если вам это нужно везде.

+0

Спасибо, я попробовал этот атрибут, и он работает. Можно ли установить это значение из кода? Предположим, что у меня есть проверенный запрос, и он действителен, я не должен устанавливать 'ValidateRequest' значение true, чтобы избежать любых атак. – KaeL