为什么用PHP硬编码用户名密码安全威胁?

问题描述

我在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,但无法理解为什么在这种情况下硬编码不好。

我的论点

  1. 这消除了sql注入的可能性
  2. 如果关闭错误报告功能,将永远不会看到源代码

解决方法

由于您未使用数据库,因此无法消除SQL注入的可能性。 您应该将用户名和密码存储在数据库中,并通过一些哈希算法(例如SHA1)存储这些名称和密码,并应用“黄金规则过滤器输入和转义输出”。

,

硬编码不是安全威胁。这是一个坏习惯。 同样,@ tobias评论uname pass为布尔值也无害。所有输入均在php中视为字符串