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
предоставляет нам Подготовленные Заявления и Заполнители вместо побега.