2010-12-07 2 views
0

Я считаю, что я прочитал все связанные с ним темы, появившиеся мне, когда я писал название.Как предотвратить XSS на моем сайте?

Короче говоря, я использовал почти ВСЕ функции PHP для дезинфекции ввода пользователя, но я все равно не могу остановить простой тест XSS, который должен быть выполнен.

код, который я пытаюсь обеспечить следующим образом:

$keyword = $_POST['biz']; 
    $keyword = strip_tags($keyword); //this 
$keyword = addslashes(str_replace("||sp_rp_and||", "&", $keyword)); 
$keyword = addslashes(str_replace("<", "HELLO", $keyword)); //this 

$myFilter = new InputFilter(); //this 
$keyword = $myFilter->process($_POST['biz']); //this 
if($keyword=="") 
$query="select * from `business` order by business_id DESC LIMIT 0,20"; 
else 

Однако не из функций делает то, что он должен делать на переменную $ ключевое слово

две возможности : * У меня нет того, что я делаю. * Тест XSS терпит неудачу, но это не значит, что человек может использовать его для вреда !!?

Тест, который я использовал, прост (в поле поиска на странице): `"> alert (document.cookie); " или через URL-адрес, то же самое в обоих случаях, всплывающее окно с файлами cookie.

Что я делаю неправильно, был в этом с парой дней.

P.S. Даже установленный Mod_security2 на сервере, и он не выполнял работу (или я не настроил правильно) !!

+1

Try для вывода everithing, который приходит от пользователя с `htmlentities()` – cristian 2010-12-07 21:22:41

+0

Это было бы хорошим началом. – RobertPitt 2010-12-07 21:23:47

+0

Возможный дубликат [Предотвращение скриптов на стороне сервера, XSS] (http://stackoverflow.com/questions/2965430/preventing-server-side-scripting-xss) – ajreal 2010-12-07 21:25:31

ответ

1

Он смотрит на меня, как вы делаете все, что тяжелую работу обработки формы, а затем потерять его несколько минут спустя

Здесь вы сделали некоторую обработку до $ _POST [ «бизнеса»]:

$keyword = $_POST['biz']; 
    $keyword = strip_tags($keyword); //this 
$keyword = addslashes(str_replace("||sp_rp_and||", "&", $keyword)); 
$keyword = addslashes(str_replace("<", "HELLO", $keyword)); //this 

И здесь вы установите его равным чему-то совершенно другое:

$keyword = $myFilter->process($_POST['biz']); //this

ее возможно, что линия должна быть вместо этого:

$keyword = $myFilter->process($keywork);

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