html_entities против strip_tags с mysql_real_escape_string

У меня есть вопрос к Strip_tags, html_entities и mysql_real_escape_string.

Теперь, когда я использую, например:

strip_tags(mysql_real_escape_string($_POST['username']));

Этот код выше будет безопасным, а также это:

html_entities($_POST['username']);

Какой из них более безопасен для реального проекта.

И каково преимущество совместного использования strip_tags и mysql_real_escape_string. Но когда я использую html_entities с ними, это не сработает

1 ответ

Решение

Сначала вы должны очистить цель. Там нет все вокруг бежать.

htmlspecialchars или же htmlentities

Цель

Отображать пользовательский ввод в виде HTML.

пример

<div><?php echo htmlspecialchars($_POST['data'], ENT_QUOTES, 'UTF-8') ?></div>

Заметка

Используйте эту функцию, когда собираетесь ее отобразить. Не применяйте его для предварительного хранения в переменных.

Эта переменная уже экранирована...?

... Вы можете беспокоить себя.

strip_tags

Не используйте эту функцию. Санитарная обработка - неправильный путь.

mysql_real_escape_string

Цель

Установите пользовательский ввод в SQL.

пример

<?php
$sql = sprintf(
    "SELECT * FROM table WHERE name = '%s' AND address = '%s'",
    mysql_real_escape_string($_POST['name'], $link),
    mysql_real_escape_string($_POST['address'], $link)
);

Заметка

mysql_* функции все устарели. Вы бы лучше использовать PDO, PDO предоставляет нам Подготовленные Заявления и Заполнители вместо побега.

Руководство по PHP - PDO::prepare

Другие вопросы по тегам