Security 如何实现一个好的登录/退出webapp系统

Security 如何实现一个好的登录/退出webapp系统,security,login,web-applications,login-control,Security,Login,Web Applications,Login Control,我是一个安全密码生成器和用户名存储系统的开发人员。我们仍在努力,但我对实现安全登录/退出系统的最佳方法有几个问题 现在,我们计划做的是让登录系统保存一个带有用户名和会话密钥的cookie,这就是用作身份验证的全部内容。服务器验证两者是否匹配。登录/注销时,将创建一个新密钥 这是一个安全相关的webapp,虽然我们实际上没有存储任何可能让用户感到不安的信息,但因为它是面向安全的,所以我们必须至少以用户满意的方式显示安全 有没有更好的方法在PHP中实现登录/退出系统?最好不要花费太多的编码时间或服务

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

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

这是一个安全相关的webapp,虽然我们实际上没有存储任何可能让用户感到不安的信息,但因为它是面向安全的,所以我们必须至少以用户满意的方式显示安全


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

请确保您已经阅读了,特别是A3:。这很重要,因为您已经违反了https的要求。另外,请务必阅读有关CSRF的信息,强制人们登录或注销您的服务是一个漏洞。关闭.htaccess中的目录列表:

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


在暴力保护方面,我非常喜欢gmail的方法。在他们获得足够的“热量”之前,不要用验证码提示他们。对您的系统执行错误操作可能会累积热量。Heat分配给ip地址,而不是会话。例如,如果他们注册了2个用户帐户,您可能希望在第3个帐户上提示他们capthca。如果您有3次登录尝试失败,则应提示他们。如果他们破解了验证码,你可以选择通过降低他们的热值或将其设置为零来“冷却”他们。使用reCpathca是目前为止最好的

确保您已经阅读了,特别是A3:。这很重要,因为您已经违反了https的要求。另外,请务必阅读有关CSRF的信息,强制人们登录或注销您的服务是一个漏洞。关闭.htaccess中的目录列表:

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


在暴力保护方面,我非常喜欢gmail的方法。在他们获得足够的“热量”之前,不要用验证码提示他们。对您的系统执行错误操作可能会累积热量。Heat分配给ip地址,而不是会话。例如,如果他们注册了2个用户帐户,您可能希望在第3个帐户上提示他们capthca。如果您有3次登录尝试失败,则应提示他们。如果他们破解了验证码,你可以选择通过降低他们的热值或将其设置为零来“冷却”他们。使用reCpathca是目前为止最好的

谢谢你的评论。我通常是一个网页设计师,而不是开发人员,所以这对我来说有点新鲜。不过,我们的团队中确实有一位安全专家。我是如何违反https的要求的?这是我们计划使用的东西,所以如果我违反了它,我需要知道如何使用。我一定要关闭目录列表。谢谢我也感谢你对WAFs和“热”方法的评论。您是否建议我们将“热”存储在数据库中,以及如何存储?@Brandon Wang https必须用于整个会话,在任何情况下都不能通过不安全的连接(http)传输会话id。您应该将“heat”存储在数据库中,我会使用直接从套接字获取的$\u SERVER['REMOTE\u ADDR']将ip地址设置为“unique id”,而$\u SERVER['X-Forwarded-For']是一个用户控制的变量,可以包含任何值。是否可以像谷歌那样在登录期间仅使用https?我也明白你所说的“热”。我会考虑的。你似乎对这方面很精通。“你会考虑为PASSPAD帮助交换一个切入点吗?”Brandon Wang读到OWASP前10,在用户名/密码中使用HTTPS毫无意义,如果你在几秒钟后泄露会话ID,嗅到该行的黑客将只使用经过验证的会话。此外,在中国入侵谷歌后,gmail在所有方面都使用https。我愿意帮忙,我该怎么联系你?我可以在这里看到你的逻辑。其实风险并没有那么高——我们只存储用户名——但我仍然认为我们应该保护它。谢谢你的评论。我通常是一个网页设计师,而不是开发人员,所以这对我来说有点新鲜。不过,我们的团队中确实有一位安全专家。我是如何违反https的要求的?这是我们计划使用的东西,所以如果我违反了它,我需要知道如何使用。我一定要关闭目录列表。谢谢我也感谢你对WAFs和“热”方法的评论。您是否建议我们将“热”存储在数据库中,以及如何存储?@Brandon Wang https必须用于整个会话,在任何情况下都不能通过不安全的连接(http)传输会话id。您应该将“heat”存储在数据库中,我会使用直接从套接字获取的$\u SERVER['REMOTE\u ADDR']将ip地址设置为“unique id”,而$\u SERVER['X-Forwarded-For']是一个用户控制的变量,可以包含任何值。是否可以像谷歌那样在登录期间仅使用https?我也明白你所说的“热”。我去看医生