Если вы не подтвердили ввод как-то, вы не должны предполагать, что он будет всегда возвращает безопасный вывод, потому что функции, такие как SHA1, могут возвращать значения ошибок, если заданы неожиданные ввод. Например:
echo '<?php echo sha1(''); ?>' | php
Warning: sha1() expects at least 1 parameter, 0 given in - on line 1
И этот выход явно нарушает предположение, что «это всегда шестнадцатеричная строка». Другие функции хеширования на других языках могут представлять еще одно поведение.
Кроме того, схема выше пароля код хэширования ($password = sha1($password+$salt);
) является очень слабо (see why), и я бы настоятельно рекомендуем не использовать его даже в качестве примера, как кто-то в конце концов гарантированно найти его на StackOverflow и использовать в производство.
Кроме того, как уже отмечалось выше, построение SQL-запросов путем объединения строк также является плохой практикой и может привести к проблемам безопасности в будущем: сегодня единственным параметром в запросе будет пароль, завтра кто-то решит добавить другое вариант, и я уверен, что они не будут переписывать запрос, а просто используют шаблон, который уже существует ...
Вывод команды 'sha1' не выполняется непосредственно в любом месте, так как это всего лишь строка шестнадцатеричных цифр. Актом использования функции «sha1» является «дезинфекция». –
Используйте функцию [password_hash()] (http://www.php.net/manual/en/function.password-hash.php), алгоритмы SHA * слишком быстр для хэш-паролей и поэтому могут быть слишком грубыми. Функция password_hash() вернет кодированный хеш и не сможет использоваться для SQL-инъекции. – martinstoeckli