@raxweb

Правильная ли php-функция фильтрации post данных перед записью в mysql?

Отфильтрует ли такая функция все опасные конструкции (XSS, инъекции и подобное)?

Или необходимо еще что-то добавить?

function filter_text_form ($text)
{
$text = strip_tags ($text);//вырезаем HTML теги

$text = str_replace ("'", ''', $text);
$text = str_replace ('"', '"', $text);
$text = str_replace ("`", ''', $text);
$text = str_replace ('«', '«', $text);
$text = str_replace ('»', '»', $text);
$text = str_replace ("′", ''', $text);
$text = str_replace ('″', '"', $text);
$text = str_replace ("‘", ''', $text);
$text = str_replace ("’", ''', $text);
$text = str_replace ("‚", ',', $text);
$text = str_replace ('“', ''', $text);
$text = str_replace ('”', ''', $text);
$text = str_replace ('„', ',', $text);

$text = str_replace ('  ', ' ', $text);//двойной пробел
$text = str_replace ('%', '', $text);
$text = str_replace ("\\", '-', $text);//обратный слеш
$text = str_replace ('<', '&lt;', $text);
$text = str_replace ('>', '&gt;', $text);

$text = str_ireplace ('union', '', $text);
$text = str_ireplace ('char', '', $text);
$text = str_ireplace ('get', '', $text);
$text = str_ireplace ('select', '', $text);
$text = str_ireplace ('update', '', $text);
$text = str_ireplace ('group', '', $text);
$text = str_ireplace ('order', '', $text);
$text = str_ireplace ('benchmark', '', $text);
$text = str_ireplace ('connect', '', $text);

connect_db(); $text = mysql_real_escape_string ($text);

return $text;
}
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
VladimirAndreev
@VladimirAndreev
php web dev
используйте подготовленные запросы (prepare) и подстановку значений на стороне сервера.

php pdo prepare execute
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Глядя на этот ужас, летящий на крыльях ночи, я всегда задаюсь вопросом: допустим, автор захочет написать аналог тостера. Что будет с текстом его вопроса после обработки такой функцией?

По поводу того, что сюда добавить:

В ужасе стереть все что что тут написано.
Прочитать раз в жизни документацию и забыть про mysql_real_escape_string как про страшный сон.
Включить голову, и сообразить, что mysql не подвержена XSS. То есть при записи в базу данных от этой атаки защищаться не нужно.
Освоить PDO, и использовать подготовленные выражения для работы с базой данных.
Ответ написан
php666
@php666
PHP-макака
Или необходимо еще что-то добавить?
включить мозги и начать читать профильные сайты с азов. полное непонимание абсолютно всего. и как тут верно подметили - "В ужасе стереть все что что тут написано."
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы