Проверка и дезинфекция ввода пользователя в PHP - PullRequest
1 голос
/ 25 августа 2011

Рекомендуется ли использовать filter_var() и sanitize_var(), предлагаемые PHP, для фильтрации и очистки переменных, или есть лучшие варианты?

Спасибо.

Ответы [ 4 ]

0 голосов
/ 31 октября 2013

Я думаю, что лучше всего использовать проверку на стороне клиента с использованием HTML5, а затем использовать на стороне сервера. В PHP есть такие функции, как FILTER_SANITIZE_STRING (хотя вам не нужно это проверять), которые фильтруют строки, и вы можете использовать FILTER_VALIDATE_EMAIL вместо ручной проверки электронной почты с помощью регулярных выражений. Вы также можете использовать такие ограничения, как количество символов и т. Д.

Пример концептуально ...

if form is submitted 
  if 'name' is not empty
    create a variable that equals filter_var($_POST['name'], FILTER_SANITIZE_STRING)
    if 'name' is empty then set echo an error message

  if 'email is not empty
    create a variable that equals filter_var($_POST['email'], FILTER_SANITIZE_STRING)
    // then you can validate email
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
      error message
  // do this for other variables

  if there's not error
    send email and or a thank you message

 //FORM here
0 голосов
/ 25 августа 2011

Я хотел бы упомянуть Очиститель HTML для любой фильтрации / очистки HTML.

Для общей проверки (числовые, дата и другие значения) существует множество библиотек, также есть встроенные функции, вы можете выбрать наиболее подходящие, но я все же хотел бы упомянуть Zend_Validate , если вы уже используете Zend Framework.

0 голосов
/ 25 августа 2013

Давайте попробуем проверить правильность ввода из формы.

Первое, что нам нужно сделать, это подтвердить, что входные данные, которые мы ищем, существуют.

Затем мы фильтруем входные данные с помощью функции filter_input ().

В приведенном ниже примере входная переменная «email» отправляется на страницу PHP:

0 голосов
/ 25 августа 2011

Я бы всегда рассмотрел следующую мантру ... «Никогда не доверяйте пользовательскому вводу» ctype_alpha, ctype_alnum также хороши для проверки и не забывайте проверять также и на стороне клиента (проверка JavaScript), это также поможет снизить нагрузку на сервер

...