Фильтрация ввода текстовой области php 5.5 и экранирование вывода

Изучая лучший способ очистки данных HTML-формы, я обнаружил, что вы должны «ФИЛЬТРОВАТЬ ВВОД» и «ИЗМЕНЯТЬ ВЫВОД».

К сожалению, большая часть информации по этой теме, что есть, является старой информацией (PHP 4.x, 2009 и т.д.). Многие веб-страницы рекомендуют mysql_real_escape_string, который устарел с PHP 5.5.0.

Я использую PHP 5.5.x, веб-сервер Apache и базу данных MySQL. Я использую подготовленные операторы PDO. Все наборы символов UTF-8.

Я просмотрел фильтры PHP Sanitize (найденные здесь: http://www.php.net/manual/en/filter.filters.sanitize.php).

Я отфильтровал все входные данные и избежал всех выходных данных, кроме моих текстовых областей. Текстовые области предназначены для пользователя, чтобы «описать событие». Они довольно большие — 500 символов. Это единственное место, которое я считаю наиболее уязвимым для вредоносного кода.

Первое, что я делаю со всеми входными данными, — это функция trim().

Какие фильтры лучше всего запускать на входе?

Как мне избежать вывода?

Я хочу, чтобы вывод был читаемым.

Заранее спасибо.


person Ric    schedule 10.03.2014    source источник
comment
Это зависит от ваших потребностей. Сохраняете ли вы ввод текстовой области в БД, другие текстовые файлы? Вы хотите отображать его в виде обычного текста, HTML или использовать собственную систему кодов, такую ​​как BBCode?   -  person barell    schedule 10.03.2014


Ответы (1)


Ответ зависит от типа ввода, который вы хотите отфильтровать. Предположим, вы хотите, чтобы в вашей текстовой области был только простой простой текст, поэтому вам нужно избегать javascript, css и html-кода, а также вам нужно предотвратить SQL-инъекцию в этом вводе и получить только 500 символов длины.

  1. Используйте strip_tags, чтобы избежать тегов HTML, CSS и JS.
  2. Используйте str_replace("'","\'", $string), чтобы SQL-инъекция не анализировала одинарную кавычку.
  3. Используйте substr, чтобы сократить строку до 500 символов, если они превышают лимит.

Я рекомендую вам посетить: https://www.owasp.org/index.php/Top_10_2013-Top_10

Также я рекомендую использовать PHP Framework, чтобы избежать традиционных способов работы с этими распространенными рисками безопасности.

На мой взгляд, вы можете использовать Zend, Code Igniter или Laravel.

  1. http://ellislab.com/codeigniter/user-guide/libraries/input.html
  2. http://framework.zend.com/manual/2.0/en/modules/zend.filter.html
  3. http://laravel.com/docs/validation
person afym    schedule 10.03.2014