2014-12-04 17 views
2

Я читал почти везде, что мы не должны использовать наши собственные пользовательские проверки имени пользователя и пароля (например, регулярное выражение и т. Д.), Но вместо этого используйте filter_var и filter_input, встроенные в функции, предоставляемые PHP 5 и выше. Однако даже после поиска более часа за разными строками поиска я не нашел ни одного примера, который показывает, как мы можем проверить правильность имени пользователя/логина и пароля в форме входа. Может ли кто-то быть достаточно любезным, чтобы обеспечить надежную проверку подлинности для имени пользователя и входа в систему.php имя пользователя и пароль с фильтрами

Кроме того, я хотел бы также пояснить, следует ли каким-либо образом манипулировать полями имени пользователя и входа в форме входа, чтобы создать угрозу безопасности? Я имею в виду, может ли хакер использовать имя пользователя/логин или пароль таким образом, чтобы представлять собой инъекцию или любую другую угрозу?

Спасибо всем.

ответ

1

Функции фильтра в php5 + упрощают процедуру проверки данных ввода данных пользователя. Например:

, если у вас есть регистрационная форма с электронной почтой и полем пароля, вы можете проверить, если адрес электронной почты является действительной со следующим кодом:

if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    // Everything okay 
} else // Email is malformatted 

Там нет фильтров для чеки Qualitiy паролей , Вы можете найти обзор имеющегося фильтра здесь: http://php.net/manual/en/filter.filters.validate.php.

Есть также фильтры для дезинфицировать userinputs, например: Если вы хотите, чтобы дезинфицировать адрес электронной почты, вы можете использовать следующий код:

$sanitized_email = filter_var($email, FILTER_SANITIZE_EMAIL); 

вы можете посмотреть здесь для всех доступных санитарной обработки фильтров и что они точно делают здесь: http://php.net/manual/en/filter.filters.sanitize.php

+0

Привет, Спасибо за ответ. Посмотрите, что я столкнулся со всеми этими примерами для проверки электронной почты, URI, IP-адресов даже целых чисел, но я не смог найти ни одного примера имени пользователя и пароля. Я был бы рад, если бы кто-то мог представить пример для этих двух конкретных случаев, которые, я думаю, также послужили учебным пособием для проверки правильности входа с использованием фильтров PHP. Благодаря! – Ajoo

+1

Хорошо, что во многом зависит от того, что вы хотите делать. Каковы правила фильтрации типов для имен пользователей? Это в значительной степени ваше собственное решение! В нем просто не существует поведения по умолчанию для имен пользователей и паролей, поэтому в библиотеке фильтра нет фильтров для имен пользователей и паролей. Определите свой стандарт самостоятельно. Вот почему я указал пример электронной почты, потому что многие современные веб-сайты используют адреса электронной почты в качестве имен пользователей. – Azeruel

+1

Если вы не хотите использовать электронные письма в качестве имен пользователей, вы хотите только очистить ввод пользователя, чтобы они не сохраняли HTML и прочее в вашей базе данных => Используйте FILTER_SANITIZE_FULL_SPECIAL_CHARS для имени пользователя. Возможно, вы не хотите, чтобы имена пользователей могли быть длиннее 255 символов, поэтому проверьте это, но, как я уже сказал, это зависит от потребностей ур. Для паролей я бы только проверял минимальную длину, просто используйте strlen и хэш с криптом, прежде чем сохранять его в базе данных. Будь проще. – Azeruel

0

вы можете использовать этот код, чтобы фильтровать имя пользователя

$username= filter_input(INPUT_POST,'username',FILTER_SANITIZE_SPECIAL_CHARS); 
  1. Первый метод формы параметр получить/сообщение
  2. второй параметр Имя входного Пример: <input type="text" name="username">
  3. третий тип параметра фильтра, который вы можете прочитать больше о нем http://php.net/manual/en/function.filter-input.php
Смежные вопросы