基本的PHP安全问题

时间:2012-04-30 05:04:04

标签: php sql security

所以我不是一个真正的后端开发人员,但我需要开发一个基本的密码登录。 (完全不合理的)客户明确表示他只想输入密码。没有用户名或任何其他信息可以传递。由于没有任何用户,只有一个密码我直接编码到脚本中。看起来像:

$password = $_POST['password']

if ($password == 'mypass') {

do something....

}

这是否容易受到某种注入攻击?还有其他我应该担心的巨大安全漏洞吗?

4 个答案:

答案 0 :(得分:3)

  

这是否容易受到某种注入攻击?

不,因为你没有注入任何东西。

  

我应该担心还有其他巨大的安全漏洞吗?

  • 它具有极低的熵,攻击者只是自动尝试随机密码不应该有太多麻烦进入。你可能已经意识到这一点。
  • 如果您的服务器遭到破坏和/或显示源代码,则硬编码密码将立即显示并可用。你至少可以对它进行加盐和散列以防止这种情况发生。

答案 1 :(得分:1)

不,您的代码不易受攻击或可利用,但可以改进。

我建议哈希密码并使用srtcmp而不是==运算符。

答案 2 :(得分:1)

有一种情况是攻击是开放的,你可能会或可能不会受到攻击。

您的示例要求用户发布密码,并且重要的是,不会指示它正在维护服务器端会话。如果没有使用会话,这将意味着只有包含此代码的页面以及发布密码的页面才会受到保护。

如果您开发了一个多页面的Web应用程序,并且未将此密码检查代码放入每个敏感资源中,您将很容易受到授权绕过攻击。

e.g。如果您的网站有

页面
  1. http://example.com/ public
  2. http://example.com/admin/ private&保护
  3. http://example.com/admin/users.php private&不受保护
  4. 恶意用户可以直接访问/admin/users.php,完全绕过您的授权机制。

答案 3 :(得分:0)

始终尽可能使用单向散列,以便存储在db表或硬编码中。 您可以硬编码密码的MD5哈希值,而不是硬编码明文密码。然后计算用户输入的哈希值,然后比较两者。这样你就可以担心任何人窃取你的代码并泄露密码。