javascript - Web 中的安全身份验证

标签 javascript php security authentication web

我通过以下方式在网页上使用身份验证:

用户写入他的密码(仅密码 - 它们在数据库中是唯一的),该密码以 SHA-3 形式发送到服务器。系统在数据库中搜索该哈希值,如果找到,则将用户名写入 SESSION。用户将被重定向到主页。

因此,每次主页都会检查SESSION,如果未设置,则会将用户发送到身份验证页面。

访问检查SESSION值的页面是否安全?
是否可以创建一个伪造的SESSION来访问该页面?

最佳答案

我建议阅读 OWASP Cheat Sheet关于 session 管理。

由于 HTTP 是无状态的,因此 session 需要由应用程序来实现。您的方法与通常的做法相差不远。

在前端询问凭据并作为 POST 参数发送。此连接受 SSL/TLS 保护非常重要。您无法对客户端进行哈希处理并发送未加密的哈希值,因为拦截该请求的任何人都可以读取哈希值并简单地重放该请求以进行身份​​验证。

听起来您只想仅通过密码来验证用户身份。不要这样做。始终需要用户名和密码。

一旦获得凭据服务器端,您只需查找用户名并检查密码的哈希值是否匹配(您不想在服务器端存储纯文本密码)。如果凭据有效,则在响应中为 session ID 设置 Cookie 值。

cookie 必须安全且仅限 HTTPS。 session ID 必须足够长且随机,不能被猜到。设置 cookie 后,每个新的客户端请求都会发送带有 session ID 的 cookie。您的应用程序应存储当前 session ID,以便查看哪个用户正在发出请求,而无需再次进行身份验证。

有些框架会为您完成所有这些工作。如果您没有经验,我强烈建议使用框架,或者至少仔细阅读备忘单。

关于javascript - Web 中的安全身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080796/

相关文章:

javascript - 单击链接后销毁特定的 li 及其内容

php - 无法在 PHP 的另一个命名空间内使用命名空间类

php - 如何将echo语句从函数调用分配给变量?

php - 将 "password is ok"存储在 php session 变量中?

security - HTML5 中的注册机标签

javascript - JointJs:示例 "Marking available magnets"无法正常工作(端口)

javascript - 如何获取此数组中最年长的人

security - 为什么我应该存储持久登录 cookie 和密码重置 token 的哈希值?

javascript - 带有 Union 的条件类型

php - 如何精确匹配 PHP 的 preg_match 中的 3 位数字?