Php 将某人登录到网站的最安全的方法是什么?
我试图确定最好的方式,让别人登录到我的网站后,我已经验证了登录是正确的 我试着看看投票最多的答案说我应该生成一个令牌,然后将这个令牌存储在数据库中!当然,这是完全不安全的,因为只需要数据库黑客和cookie编辑就可以进入其他人的帐户Php 将某人登录到网站的最安全的方法是什么?,php,security,token,remember-me,login-control,Php,Security,Token,Remember Me,Login Control,我试图确定最好的方式,让别人登录到我的网站后,我已经验证了登录是正确的 我试着看看投票最多的答案说我应该生成一个令牌,然后将这个令牌存储在数据库中!当然,这是完全不安全的,因为只需要数据库黑客和cookie编辑就可以进入其他人的帐户 有人能给我提供最新的安全方法吗?谢谢。将生成的令牌以明文形式存储在数据库中显然是一种风险,但一般认为是可以接受的。一种缓解技术是要求用户在执行敏感操作之前重新验证。例如,亚马逊似乎要求我在修改帐户详细信息之前输入密码,除非我最近输入了密码 将生成的令牌以明文形式存储
有人能给我提供最新的安全方法吗?谢谢。将生成的令牌以明文形式存储在数据库中显然是一种风险,但一般认为是可以接受的。一种缓解技术是要求用户在执行敏感操作之前重新验证。例如,亚马逊似乎要求我在修改帐户详细信息之前输入密码,除非我最近输入了密码 将生成的令牌以明文形式存储在数据库中显然是一种风险,但通常认为是可以接受的。一种缓解技术是要求用户在执行敏感操作之前重新验证。例如,亚马逊似乎要求我在修改帐户详细信息之前输入密码,除非我最近输入了密码 我们最近发布了一篇关于(又称“记住我”)的博客,但这篇博客与其他博客的最大区别在于查找(不是)和验证(恒定时间)的分离 在我们在博客文章中概述的策略中,您不是在数据库中存储令牌,而是存储令牌的SHA-256散列。如果攻击者泄漏这些值,他必须破解强随机令牌的SHA-256哈希。他们最好只是启动一个反向shell,让他们作为任何用户进行身份验证(或者继续利用本地内核漏洞接管整个机器) 登录(简单和基本)
- 使用bcrypt.特别是
密码验证()不要自己制造盐。
如果你想多做一点,考虑这个库来加密密码哈希(如果你的数据库和WebServer在单独的硬件上,这是非常有帮助的,因为妥协数据库不会给他们加密密钥)。
- 尝试失败的速率限制。例如:每个IP或用户名失败5次后,需要验证码
rememberme
cookie中rememberme
cookie,则抓取标识符并进行数据库搜索hash_equals()
将cookie提供的令牌哈希与数据库中的SHA256哈希进行比较- 如果成功的SQL注入攻击导致令牌泄漏,则攻击者所拥有的只是各种令牌的SHA256散列。这对泄露帐户没有帮助
- 不支持数据库搜索。这就是标识符与令牌分离的原因
- 顺序标识符泄漏了应用程序的活动级别,许多企业希望对此保密。随机标识符混淆了这个细节
- (如果发现任何StackOverflow,未来的作者可以随意填写此列表。)
- 使用bcrypt.特别是
密码验证()不要自己制造盐。
如果你想多做一点,考虑这个库来加密密码哈希(如果你的数据库和WebServer在单独的硬件上,这是非常有帮助的,因为妥协数据库不会给他们加密密钥)。
- 尝试失败的速率限制。例如:每个IP或用户名失败5次后,需要验证码
rememberme
cookie中rememberme
cookie,则抓取标识符并进行数据库搜索hash_equals()
将cookie提供的令牌哈希与数据库中的SHA256哈希进行比较- 如果成功的SQL注入攻击导致令牌泄漏,则攻击者所拥有的只是各种令牌的SHA256散列。这对f没有帮助