[英]How Can I Make This Login System More Secure
我已经创建了这个php登录脚本。 我想知道天气是否安全,如果不能,我该如何改善。
PHP脚本
<?php
include_once ("ConnectToMySql.php");
session_start();
$username = $_POST['username'];
$username = mysql_real_escape_string($username);
$password = $_POST['password'];
$password = sha1($password);
$query = "SELECT password FROM users WHERE username = '$username';";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1)
{
echo "This Username Is Not Registered!";
exit;
}
if(mysql_num_rows($result) == 1)
{
if ($password == $result)
{
echo "Logged In!";
}
else echo "Wrong Password!";
}
?>
谢谢
第一个技巧可能是针对两种无效的登录情况显示一个常见错误: invalid username or password
。 这样,最终的攻击者将不会知道用户名是否有效。
您也可以进行一个同时匹配用户名和密码的查询。 您可能需要更多的用户信息(要存储在会话中?),因此最好选择这些字段而不是密码(例如id
, name
)。
关于存储在数据库中的哈希密码,您可以添加SALT
以提高安全性。 http://en.wikipedia.org/wiki/Salt_%28cryptography%29
我要做的就是将查询更改为以下内容:
"SELECT COUNT(*) FROM users WHERE username = '$username' AND password='$password';"
这样,您不必再检查密码是否正确(也不必传递敏感数据),只需检查返回的行数是否等于1即可生成一个用户名/密码均出现一条错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.