繁体   English   中英

如何使此登录系统更安全

[英]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 这样,最终的攻击者将不会知道用户名是否有效。

您也可以进行一个同时匹配用户名和密码的查询。 您可能需要更多的用户信息(要存储在会话中?),因此最好选择这些字段而不是密码(例如idname )。

关于存储在数据库中的哈希密码,您可以添加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM