0

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

$password = $_POST['password']

if ($password == 'mypass') {

do something....

}

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

4

4 回答 4

3

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

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

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

  • 它具有极低的熵,攻击者只是自动尝试随机密码不应该有太多的麻烦进入。你可能已经意识到这一点。
  • 如果您的服务器曾经被破坏和/或源代码被泄露,硬编码的密码将被泄露并立即可用。您至少可以对其进行加盐和哈希处理以防止发生这种情况。
于 2012-04-30T05:10:28.477 回答
1

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

我建议散列您的密码并使用 srtcmp 而不是 == 运算符。

于 2012-04-30T05:12:34.927 回答
1

有一种情况可能会受到攻击,您可能会或可能不会遭受攻击。

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

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

例如,如果您的网站的页面位于

  1. http://example.com/ 公共
  2. http://example.com/admin/ 私有和受保护
  3. http://example.com/admin/users.php 私有且不受保护

恶意用户可以直接访问 /admin/users.php,完全绕过您的授权机制。

于 2012-04-30T09:05:10.053 回答
0

尽可能始终使用一种方式散列,用于存储在数据库表中或硬编码。您可以硬编码密码的 MD5 哈希值,而不是硬编码明文密码。然后计算用户输入的哈希值,然后比较两者。这样你就不必担心有人窃取你的代码并用它泄露密码。

于 2012-04-30T09:15:03.803 回答