Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Безопасный ввод текста
Форумы портала PHP.SU » » Вопросы новичков » Безопасный ввод текста

Страниц (7): [1] 2 3 4 5 6 7 »
 

1. Dazar - 25 Июля, 2012 - 11:56:34 - перейти к сообщению
Как сделать "защиту от дураков и хакеров"?
Есть текстовое поле, которое отправляется на сервер. Какими командами убрать всё HTML тэги, заменить кавычки?
Не отправляйте в поиск, мне не лень, я спрашиваю чтобы ничего не забыть:
Какой функцией заменить одинарные кавычки на ’ ?
Чем отличаются strip_tags от htmlspecialchars, кого лучше использовать?
2. OrmaJever - 25 Июля, 2012 - 12:02:32 - перейти к сообщению
strip_tags() - убирает 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?
4. dadli - 25 Июля, 2012 - 12:17:50 - перейти к сообщению
Dazar
лучше mysql_escape_string()
5. Dazar - 25 Июля, 2012 - 12:23:23 - перейти к сообщению
Итого:
Пользователь вводит сообщение, а я его:
$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:
CODE (htmlphp):
скопировать код в буфер обмена
  1.     $text = ' '.strtoupper($text);
  2.     if ((strpos( $text, 'SELECT')) or
  3.       (strpos( $text, 'DELETE')) or
  4.       (strpos $textp, 'UPDATE')) or
  5.       (strpos( $text, 'INSERT')) or
  6.       (strpos( $text, ' FROM ')) or
  7.       (strpos( $text, ' INTO ')) or
  8.       (strpos $text, 'VALUES'))
  9.     ) {
  10.       die('SQL-injection rejected.');
  11.     }
7. Мелкий - 25 Июля, 2012 - 13:50:50 - перейти к сообщению
Zuldek пишет:
Не лишним будет проверка на наличие в запросе синтаксиса SQL:

Лишним. И совершенно вредным.
8. Zuldek - 25 Июля, 2012 - 14:03:09 - перейти к сообщению
Мелкий пишет:
Zuldek пишет:
Не лишним будет проверка на наличие в запросе синтаксиса SQL:

Лишним. И совершенно вредным.

Если критично не дергать субд запросами, можно отсечь их фильтрами. Безопасными эти запросы будут и так, но от нагрузки обработчик запросов это не избавит. Потому исправил бы, на "возможно не лишним, в некоторых частных случаях..." .
9. Мелкий - 25 Июля, 2012 - 14:12:30 - перейти к сообщению
Определённо, непременно, лишним.
Если у вас конечное количество валидных данных - на этот список и проверяйте.
Если данные чисто текстовые - никакого лишнего изменения оных быть не должно. Безобиднейшие "selection sort", "please, delete this message", "updates available!" с какого-то перепуга получат сообщение о SQL инъекции.
10. Dazar - 25 Июля, 2012 - 22:46:57 - перейти к сообщению
Zuldek пишет:
0. Понятия не имею в какой кодировке вы получаете тексты, но, на всякий случай, лучше используйте mysql_real_escape_string вместо mysql_escape_string.

Все страницы и база данных в utf-8. А чем отличаются эти функции?
11. Dazar - 26 Июля, 2012 - 13:35:40 - перейти к сообщению
mysql_real_escape_string -- Экранирует специальные символы в строке, используемой в SQL-запросе, принмимая во внимание кодировку соединения.
вот оно что)
12. просто даня - 26 Июля, 2012 - 14:20:15 - перейти к сообщению
слишком все у вас сложно)
PHP:
скопировать код в буфер обмена
  1.  
  2. # к примеру в $_POST['text'] приходит следующее "<a href="reklama.ru">reklama.ru</a>
  3. # Приходите к нам у нас самое лучшее говно!
  4. # <a href="reklama.ru">reklama.ru</a>"
  5. $text = $_POST['text'];
  6. $text = str_replace('
  7. ', '<br>', str_replace('>', '>', str_replace('<', '<', $text)));
  8. echo $text;
  9. # выдаст "<a href="reklama.ru">reklama.ru</a><br>Приходите к нам у нас самое лучшее говно!<br><a href="reklama.ru">reklama.ru</a>"
  10. # а в браузере будет выглядит так "<a href="reklama.ru">reklama.ru</a>
  11. # Приходите к нам у нас самое лучшее говно!
  12. # <a href="reklama.ru">reklama.ru</a>"
  13. # то есть в том же виде в котором и было отправлено юзером...
  14.  
13. DelphinPRO - 26 Июля, 2012 - 16:33:45 - перейти к сообщению
просто даня как раз для этого есть функция htmlspecialchars ;)
14. LIME - 26 Июля, 2012 - 16:39:50 - перейти к сообщению
1ый реплэйс - nl2br
а другие я вообще не понимаю
шило на мыло
и как быть с инъекциями?
(Добавление)
просто даня твой портал еще жив?))
дай ссылку посмотреть))
15. просто даня - 26 Июля, 2012 - 19:29:17 - перейти к сообщению
city.budennovsk.ru
reklamack.ru

другие не дам, те плохо защищены) то есть я там защиту от таких как вы ХАКЕРОВ еще не доделал) лень)
(Добавление)
зачем иметь мозги себе и другим всякими заумными функциями когда можно сделать все это самой простой функцией str_replace))

 

Powered by ExBB FM 1.0 RC1