1

我是PassPad的开发人员之一,这是一个安全密码生成器和用户名存储系统。我们仍在努力,但我对实现安全登录/退出系统的最佳方式有几个问题。

现在,我们计划做的是让登录系统保存一个带有用户名和会话密钥的 cookie,这就是身份验证的全部内容。服务器验证两者是否匹配。登录/注销时会创建一个新密钥。

这是一个与安全相关的 web 应用程序,虽然我们实际上并没有存储任何可能使用户感到不安的信息,但因为它是面向安全的,所以我们有必要至少以用户认为的方式显得安全高兴。

有没有更好的方法在 PHP 中实现登录/退出系统?最好不要花费太多的编码时间或服务器资源。还有什么我需要实施的,比如蛮力保护等?我该怎么做呢?

4

1 回答 1

4

确保您已阅读2010 年 OWASP 前 10 名,尤其是 A3: Broken Authentication and session management。这很重要,因为您已经违反了它对 https 的要求。还要确保阅读有关 CSRF 的信息,强制人们从您的服务登录或注销是一个漏洞。关闭 .htaccess 中的目录列表:http: //passpad.org/actions/

我还建议运行 Web 应用程序防火墙,特别是如果您是安全 Web 应用程序。mod_security 是免费的,可以阻止很多攻击。还要确保使用 wapiti(开源)或 acunetix($$$)测试您的应用程序是否存在漏洞,但请确保您在禁用 WAF 的情况下测试您的应用程序。

在蛮力保护方面,我真的很喜欢 gmail 的方法。在他们获得足够的“热量”之前,不要用验证码提示他们。对系统执行不良操作可能会积累热量。热量分配给一个 IP 地址,而不是一个会话。例如,如果他们注册了 2 个用户帐户,您可能需要提示他们使用第 3 个用户帐户的 capthca。如果您有 3 次失败的登录尝试,您应该提示它们。如果他们解决了验证码,您可以选择通过降低其热值或将其设置为零来“冷却”它们。使用 reCpathca 是迄今为止最好的。

于 2010-04-23T22:05:22.833 回答