问题描述
我在PHP中有基本的登录系统。索引页面上的表单使用 POST
方法将用户名和密码提交到同一页面。用户名和密码是硬编码的。
这是处理索引页面上的PHP代码
if( isset ($_POST['submit']) ) {
$username='Admin';
$password='root';
if( ( $_POST['uname'] == $username ) && ( $_POST['pass'] == $password) ) {
// Redirect to admin page
}
else{
echo "Wrong credential";
}
}
我已经提到This question,但无法理解为什么在这种情况下硬编码不好。
我的论点
解决方法
由于您未使用数据库,因此无法消除SQL注入的可能性。 您应该将用户名和密码存储在数据库中,并通过一些哈希算法(例如SHA1)存储这些名称和密码,并应用“黄金规则过滤器输入和转义输出”。
,硬编码不是安全威胁。这是一个坏习惯。
同样,@ tobias评论uname
或 pass
为布尔值也无害。所有输入均在php中视为字符串