Подтверждение ввода для свободных текстовых полей - PullRequest
0 голосов
/ 25 августа 2018

Я много искал о проверке формы в PHP. К сожалению, все учебные пособия о механизме проверки касаются конкретных полей, таких как имена, письма или даты. Проверить правильность пользовательского ввода в этих полях просто с помощью регулярного выражения. Но как лучше всего проверить свободные поля, такие как texteara для связи с нами или поле для комментариев? В частности, в поле комментария пользователь должен также использовать «опасные» символы типа «<», «>» или «'».

Каков наилучший способ обработки пользовательского ввода? Логически, это плохая идея хранить пользовательские данные в чистом виде в базе данных. Но также плохая идея блокировать такие символы, как «<», «>» или «'».

Я видел функцию с именем htmlspecialchars() в PHP. Многие веб-сайты говорят, что достаточно вызвать эту функцию с помощью пользовательского ввода. На мой взгляд, это решение действительно рискованно без дополнительных проверок.

Есть ли у кого-нибудь какие-либо советы для меня, как я могу безопасно проверить вводимые пользователем данные, не уменьшая при этом «удобство использования»? Спасибо.

1 Ответ

0 голосов
/ 12 октября 2018

Но как лучше всего проверить свободные поля, такие как contactte us texteara или поле комментариев?В частности, в поле комментария пользователь также должен использовать «опасные» символы, такие как «<», «>» или «'».

Вы можете использовать if (strpos($string, '<') !== false) для каждого опасного символа (где «опасный»"очень зависит от домена).

Каков наилучший способ обработки ввода пользователя?Логически, это плохая идея хранить пользовательские данные в чистом виде в базе данных.Но также плохая идея блокировать такие символы, как "<", ">" или "'".

  1. Для предотвращения внедрения SQL просто используйте подготовленные операторы .(Предупреждение: не эмулируемые подготовленные операторы.)
  2. Для предотвращения XSS, экранирование на выходе, никогда на входе .

Не существует волшебной панацеи для проверки ввода.,Вы должны знать, что ваш код делает с данными, чтобы определить, что безопасно, а что небезопасно.Запросы LDAP имеют другие требования безопасности, чем запросы SQL, запросы XPath или пути к файловой системе.

Если вы ищете более общую библиотеку проверки ввода по причинам, не связанным с безопасностью, Ionizer стоит проверитьвне.

...