2010-06-19 5 views
3

Я пытаюсь остановить атаку XSS, поэтому я использую hmml agility pack, чтобы сделать свой белый список и библиотеку скриптов Microsoft Anti-Cross Site, чтобы справиться с остальными.Как получить QueryString из href?

Теперь я просматриваю кодировку всех html hrefs. Я получаю большую строку html-кода, который может содержать hrefs. В Accours для MS Library у них есть URL-код, но если вы кодируете весь URl, то он не может быть использован. Таким образом, в данном примере они просто закодировать строку запроса

UrlEncode ненадежный вход используется в URL (например, значение в строки запроса) Нажмите здесь!

http://msdn.microsoft.com/en-us/library/aa973813.aspx

Так что теперь мои вопросы как я могу разобрать через HREF и найти строку запроса. Всегда ли это? затем строку запроса или может иметь пробелы и записываться по-разному?

Редактировать

Этот URLs не будет написана мной, но пользователи, которые будут обмениваться ими. Вот почему мне нужен способ убедиться, что я получаю все строки запроса, а не только те, которые соответствуют действующему формату. Если он может работать недействительным форматом, я тоже должен их захватить. Хакеры не заботятся, является ли он допустимым форматом или нет, если он все еще делает то, что он хочет.

ответ

5

Я считаю, это is всегда часть после? но вы можете легко использовать класс Uri для этого:

Uri uri = new Uri("http://foo.com/page.html?query"); 
string query = uri.Query; 

Это будет включать в себя? сам. Конечно, вы можете получить и другие биты, что может быть удобно.

+0

Хм. Я буду смотреть на это. Поэтому в основном используйте регулярное выражение или что-то другое, чтобы найти все URL-адреса, а затем зациклировать их и поместить в этот URL-адрес, а затем использовать его. – chobo2

+0

@ chobo2: Я бы не стал разглашать HTML с регулярным выражением, если честно. Но, тем не менее, вы находите URL-адреса, вот что я сделал бы с ними. –

0

Что касается использования зашифрованной строки запроса и в вашем коде, вы можете ее расшифровать
ИЛИ вы можете использовать Request.PathInfo, что вам не нужно? в строке запроса

+0

Я действительно не использую строки запроса. Это то, что пользователь может добавить и поделиться с другими пользователями. Поэтому они могут помещать плохие вещи в строку запроса, поэтому я хочу кодировать это. – chobo2

0

Вот W3C reference адресацию состав URIs с querystrings, в котором говорится, в частности, говорится:

Знак вопроса («?», ASCII 3F шестигранной) используется для разделения границы между URI запрашиваемого объекта, и набор слов, используемых для выражения запроса на этот объект.

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