Обрабатываем textarea при помощи PHP

Раньше как-то все время динамил эту тему и не придавал должного значения безопасности сайтов. Не то, чтобы я попал в неловкую ситуацию, просто решил, что пришло время заняться этим вопросом.

Смысл весь в том, что, если у нас есть поля для заполнения пользовательскими данными, туда можно пропихнуть много лишнего. А если у нас не будет проверки входящих данных — пиши пропало. Есть несколько сложностей с обработкой textarea, таких, как:

  1. Все кавычки (двойные и одинарные) должны быть экранированы (защищаемся от инъекций);
  2. Несмотря на то, что все кавычки должны быть экранированы — нам надо иметь возможность установить классы для элементов, вписать javascript код или еще чего-нибудь с кавычками;

С первым пунктом хорошо справляется функция mysqli_real_escape_string()

Эта функция из строки
$str = "<a href="">'Ссылка'</a>";

Сделает строку
<a href=\"\">\'Ссылка\'</a>

То, что нам надо! Но тут сразу появляется проблема: при выводе этой строки, тег <a> работать не будет. Да и такой вид текста ссылки: \’Ссылка\’, тоже как-то не очень. Таким образом мы переходим к реализации второго пункта.

В PHP есть такая функция, как stripslashes(). Ее задача и заключается в том, чтобы удалять экранирующие слеши.

То есть, из строки
<a href=\"\">\'Ссылка\'</a>

Получится строка
<a href="">'Ссылка'</a>

В некоторых случаях нужно еще обработать функцией htmlspecialchars(), но не в моем.

Выше описанный способ прост, как дважды два, но иногда ответ даже на самые простые вещи не всегда легко найти.