gpt4 book ai didi

PHP 高级和安全身份验证

转载 作者:行者123 更新时间:2023-12-04 13:47:52 25 4
gpt4 key购买 nike

我总是通过检查用户在表单中提供的密码的 MD5 + salt 是否与存储在数据库中的相同来制作我的身份验证代码,如果是,我保存了一个名为“status”,等于 1。 他被登录了。

我很确定这是错误且不安全的,但我从未见过任何其他方法。你们能帮帮我吗? :)

最佳答案

网站安全没有简单的解决办法,所以很抱歉回答太长:

登录后如何识别用户?如果它在 URL 中带有 session ID,则可以读取它并劫持 session 。如果它使用标准 cookie,则可以再次读取 cookie 并劫持 session 。这与密码上使用的哈希函数类型无关。

为了安全起见,请使用 SSL(或类似的加密)并使用安全标志设置 session cookie。

问题是您只能通过 SSL 验证用户的身份。为避免必须通过 SSL 提供网站的所有页面,必须使用两个 session cookie,一个是安全的,在安全身份验证(登录)期间启动,另一个标准是在用户首次点击非 SSL 页面时启动。必须通过 SSL 提供任何私有(private)或 protected 数据,并在每次点击时检查安全 cookie。

当然session数据应该存放在数据库中,而不是cookie中。 cookie 中只能使用 session ID 或类似的唯一字符串。

这样任何试图劫持事件 session 的人都只能到达非 ssl 页面。

IP 地址可以被欺骗,与用户代理一样,所以这些不应该用作用户识别的一部分。此外,用户的 IP 地址可能会在 session 期间发生变化(例如,在负载平衡器、匿名器或某些 ISP 之后),从而导致注销。

还要注意廉价的 SSL 证书。它们并不都是安全的。

不幸的是,PHP 的 native session 处理并不安全,因此良好的应用程序设计至关重要。

当涉及到用户密码时,强制使用包含大写、小写数字和符号字符的长密码(最少 8 个字符)。

还可以通过在一定次数的登录尝试失败后阻止用户一段时间来防止暴力攻击。

如果您提供通过电子邮件重置密码的工具,请确保您的用户知道要保护他们的电子邮件帐户。

事实上,没有什么是 100% 安全的,但我们可以非常接近,这些是实现这一目标所必需的主要步骤。

当然,安全性是相对的,您保护用户数据的时间长短取决于数据是什么以及您的网站可能成为多少目标。如果您要存储信用卡详细信息并且它是一个受欢迎的网站,那么安全性是最重要的。

如果您存储信用卡详细信息,那么您还需要达到相关的 PCI 合规级别。

关于PHP 高级和安全身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4037618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com