Как сделать "защиту от дураков и хакеров"?
Есть текстовое поле, которое отправляется на сервер. Какими командами убрать всё HTML тэги, заменить кавычки?
Не отправляйте в поиск, мне не лень, я спрашиваю чтобы ничего не забыть:
Какой функцией заменить одинарные кавычки на ’ ?
Чем отличаются strip_tags от htmlspecialchars, кого лучше использовать?
1. Dazar - 25 Июля, 2012 - 11:56:34 - перейти к сообщению
2. OrmaJever - 25 Июля, 2012 - 12:02:32 - перейти к сообщению
strip_tags() - убирает html теги
htmlspecialchars() - защита от xss
addslashes(), mysql_escape_string() (или аналог mysqli) - защита от sql иньекции.
Ещё фильтровать строку можно под свои надобности preg_match(), preg_replace()
strip_tags просто удаляет все html теги из строки, просто заменяет их на пустоту, а htmlspecialchars заменяет спец символы на их сущности, который бразер читает как обычные символы и не парсит их, как html страницу, прочитайте описание этих функци, я оставил вверх сылки.
htmlspecialchars() - защита от xss
addslashes(), mysql_escape_string() (или аналог mysqli) - защита от sql иньекции.
Ещё фильтровать строку можно под свои надобности preg_match(), preg_replace()
Dazar пишет:
Чем отличаются strip_tags от htmlspecialchars, кого лучше использовать?
strip_tags просто удаляет все html теги из строки, просто заменяет их на пустоту, а htmlspecialchars заменяет спец символы на их сущности, который бразер читает как обычные символы и не парсит их, как html страницу, прочитайте описание этих функци, я оставил вверх сылки.
3. Dazar - 25 Июля, 2012 - 12:12:26 - перейти к сообщению
Спасибо, я так понял, чтобы у меня MYSQL не выдавал ошибку(если в запросе SET text='$text', а переменная $text содержит одинарные кавычки), нужно прописать $text=preg_replace("'", "’", $text); я прав?
(Добавление)
Или можно просто использовать addslashes?
(Добавление)
Или можно просто использовать addslashes?
4. dadli - 25 Июля, 2012 - 12:17:50 - перейти к сообщению
Dazar
лучше mysql_escape_string()
лучше mysql_escape_string()
5. Dazar - 25 Июля, 2012 - 12:23:23 - перейти к сообщению
Итого:
Пользователь вводит сообщение, а я его:
$text=$_POST['text']; // получил
$text=strip_tags($text); //убрал теги
$text=mysql_escape_string($text);// защитился от ошибок MySQL
Я ничего не забыл?
Пользователь вводит сообщение, а я его:
$text=$_POST['text']; // получил
$text=strip_tags($text); //убрал теги
$text=mysql_escape_string($text);// защитился от ошибок MySQL
Я ничего не забыл?
6. Zuldek - 25 Июля, 2012 - 13:44:46 - перейти к сообщению
0. Понятия не имею в какой кодировке вы получаете тексты, но, на всякий случай, лучше используйте mysql_real_escape_string вместо mysql_escape_string.
1. Обрезайте пришедший текст по длине в пределах, которые ожидаете получить.
2. Не лишним будет проверка на наличие в запросе синтаксиса SQL:
1. Обрезайте пришедший текст по длине в пределах, которые ожидаете получить.
2. Не лишним будет проверка на наличие в запросе синтаксиса SQL: