php безопасный вход - PullRequest
       8

php безопасный вход

0 голосов
/ 05 декабря 2009

что вы думаете об этой процедуре входа? это довольно безопасно?

Когда они входят в систему, я сначала проверяю, что имя пользователя существует, и если я это получаю, я получаю соль (у каждого пользователя есть уникальная соль) от пользователя, что я повторно хэширую с отправленным паролем

$pass = hash('sha256', $salt . $posted_password);

а потом я просто сравниваю с

$check = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$pass."'") or die("MySQL Error: ".mysql_error());

Ответы [ 2 ]

3 голосов
/ 05 декабря 2009

Я не думаю, что будет хорошей идеей опубликовать ошибку mysql при сбое.

or die("MySQL Error: ".mysql_error());

Когда дело доходит до этого, я бы сказал, что чем меньше информации вы вернули, тем лучше. Предоставлять информацию, которая может сообщить человеку, пытающемуся войти в систему, независимо от того, является ли имя пользователя или пароль ошибочным, не очень хорошо, это также относится и к тому, чтобы сообщить пользователю, какую базу данных вы используете, как ее запрашивают и т. Д.

Еще больше осознайте, что наиболее частым способом преодоления безопасности в таких ситуациях является социальная инженерия, и в этом случае не имеет значения, как вы хэшируете данные и т. Д. (Не то, что вы не должны) Просто сказать эта безопасность очень важна, и она не ограничивается тем, как вы храните и извлекаете данные.

Например, выполняется ли вход по зашифрованной линии? Есть ли какие-либо меры по обеспечению надежности пароля у пользователя? что происходит после того, как пользователь вошел в систему, как вы отслеживаете зарегистрированных пользователей по сравнению с теми, кто просто посещает сайт? Как вы предотвращаете сессионные поглощения и т. Д. Я не специалист по этой теме, но это широкая тема. Возможно, вы просто хотели прокомментировать код, который вы разместили, и в этом случае мой верхний абзац действительно должен был быть всем, что вам нужно было прочитать;) вместе с ответом Кроу Т. Робота:)

2 голосов
/ 05 декабря 2009

Это не безопасно.

Используйте параметризованные запросы или mysql_real_escape_string, чтобы убедиться, что вы предотвращаете SQL-инъекции.

Кроме этого, это очень распространенная техника входа в систему и в основном "стандарт".

Ссылка здесь о дополнительной безопасности впрыска: Как я могу предотвратить внедрение SQL в PHP?

...