Я не очень образован на PHP или Web-безопасности в целом, но я сильно подозреваю, что код, созданный некоторым программным обеспечением, для которого я работаю, является небезопасным.Неужели я подозреваю, что этот сгенерированный PHP-код уязвим?
Вот некоторые фрагменты того, что я обеспокоен:
Первый относятся:
$sql = "SELECT password, fullname FROM ".$mysql_table."
WHERE username = '".mysqli_real_escape_string($db,$_POST['username'])."'";
Это плохо, чтобы получить пароль для данного пользователя, а затем сравнивая их в PHP, или лучше рекомендуется использовать пароль в самом запросе, что-то вроде этого:
... WHERE username = $username AND password = $hashed_password
Вторая проблема:
$crypt_pass = md5($_POST['password']);
if ($crypt_pass == $data['password'])
{
//LOGIN SUCCESS
}
Пользуется md5-хеширование, а не с помощью соли, достаточно?
Третья проблема:
setcookie('username', $_POST['username'], time() + 3600*24*30);
setcookie('password', $_POST['password'], time() + 3600*24*30);
Это хорошая идея, чтобы хранить простые/текстовые имена пользователей и пароли в печенье?
Является ли какой-либо из этого кода небезопасным, и если да, что следует делать вместо этого?
Вы храните свой пароль в открытом виде? Если это так, то это определенно проблема! : P –
№ Пароли MD5-Хешируются и сохраняются в базе данных. – b00n
MD5 не следует использовать для хранения паролей. – gabe3886