Возможный дубликат:
PHP: полная чистая / безопасная функция
Сегодня я пересмотрел фильтры безопасности моего сайта. Я использовал фильтр для ввода и ничего не делал с выходом.
Вот:
Все введенные пользователем переменные проходят через эти 2 функции в зависимости от типа:
PS: Поскольку я не начинал кодирование с нуля, я делал это для всех переменных, в том числе те, которые не используются в запросах. Я понимаю, что это убийца производительности, и это будет отменено. Лучше безопасно, чем жаль?
// numbers (I expect very large numbers) function intfix($i) { $i = preg_replace('/[^\d]/', '', $i); if (!strlen($i)) $i = 0; return $i; } // escape non-numbers function textfix($value) { $value = mysql_real_escape_string($value); return $value; }
XSS предотвращает:
Входные данные – фильтрует пользовательский текст, например сообщения и сообщения. Как вы видите, в настоящее время он пуст. Не уверен, требуется ли strip_tags.
Выход – на всех выводах html
function input($input){ //$input = strip_tags($input, ""); return $input; } function output($bbcode){ $bbcode = textWrap($bbcode); // textwrap breaks long words $bbcode = htmlentities($bbcode,ENT_QUOTES,"UTF-8"); $bbcode = str_replace("\n", "<br />", $bbcode); // then some bbcode (removed) and the img tag $urlmatch = "([a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+)"; $match["img"] = "/\[img\]".$urlmatch."\[\/img\]/is"; $replace["img"] = "<center><img src=\"$1\" class=\"max\" /></center>"; return $bbcode; }
Я включил тег img, потому что он может быть уязвим для css …
Как вы думаете? Что-то явно не так? Достаточно хорошо?
Выглядит хорошо, но вы можете легко сделать одну функцию как для текстов, так и для ints, сначала проверив ее тип и действуя на нем.