Скрипт работает с mysql. Ему передаются данные типа ников, затем другой скрипт их выводит, т.е. обрезать все спецсимволы нельзя. + нужна поддержка кириллицы. У меня есть два варианта. 1. htmlspecialchars + strip_tags + регулярка (как задать кириллицу? [а-яА-я]?). Тогда какие спецсимволы нужно фильтровать? Я думаю, в самих скриптах не может быть inj, т.к. там используется только insert и select(парамерты жестко заданы), но интересен сам способ. 2. Перед записью конвертить все через ord, а перед выводом chr. Для защиты от xss достаточно htmlspecialchars() или нужно что-то еще?
Достаточно сделать htmlspecialchars() и фильтр от кавычек и все. Никаких xss или sql inj не получится
$var = htmlspecialchars($var); $var = ereg_replace("((\'\")+)", "", $var); так? Выводятся в виде хтмл кода. Где указать кодировку?
Указать кодировку в мета-тэге, например: Code: <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> Я имел ввиду, что они могли быть: - в тэге <title>, - в тэгах <div>, <span>, и т.д, - в тэгах <style>, <script> (omg), - в названии атрибута тэга, - в значении атрибута тэга. От этого зависят правила фильтрации.
ничего такого нет. а вдруг я сделаю, а исис меня похекает? с кавычками так? PHP: $var = str_replace('"', "", $var); $var = str_replace("'", "", $var); зы у меня кодировка windows-1251
В принципе, если я правильно помню, атака с помощью utf-7 может быть только там, где не установлена кодировка в хедере, в мета-тегах и utf-7 идет с самого начала, иначе кодировкой данной страницы считается кодировка первого встреченного текста. Я прав?
Если ты параноик, юзай перед добавлением base64_encode, а перед выводом - htmlentities( strip_tags(base64_decode()),ENT_QUOTES)
лично я против xss использую не только htmlspecialchars() но и stripslashes() а против sql-inj PHP: $_POST['a'] = str_replace("'","", $_POST['a']); $_POST['a'] = str_replace("&","", $_POST['a']); $_POST['a'] = str_replace("+","",$_POST['a']); $_POST['a'] = str_replace("/","",$_POST['a']); $_POST['a'] = str_replace("*","",$_POST['a']); фильтрация символов ' & + / * вполне имхо достаточна
нуну, а если код типа PHP: $query="select hek_title,hek_header,hek_footer from hek_temp where hek_id=".$_POST['id']; ?) при Code: id=-1 union select hek_name,hek_password,hek_mail from hek_users всё будет норм выполняться