我正在以下列方式在网页上使用身份验证:
用户写入他的密码(只有密码 - 它们在数据库中是唯一的),它以SHA-3的形式发送到服务器。系统在数据库中搜索该哈希,如果找到,则向SESSION写入用户名。并且用户被重定向到主页面。
因此,每次主页检查SESSION时,如果未设置,它会将用户发送到验证页面。
访问检查SESSION值的页面是否安全?
是否可以创建伪造的SESSION来访问该页面?
答案 0 :(得分:3)
我建议阅读有关会话管理的OWASP Cheat Sheet。
由于HTTP是无状态的,因此会话需要由应用程序实现。你的方法与通常的方法相差不远。
在前端询问凭据并将其作为POST参数发送。此连接受SSL / TLS保护非常重要。您无法对客户端进行哈希处理并发送未加密的哈希值,因为任何拦截该请求的人都可以读取哈希值并只是重放请求以进行身份验证。
听起来您只想通过密码对用户进行身份验证。不要这样做。始终需要用户名和密码。
获得凭据服务器端后,您只需查找用户名并检查密码的哈希值是否匹配(您不希望将纯文本密码存储在服务器端)。如果凭据有效,则在响应中为会话ID设置cookie值。
cookie必须是安全的,只有htpps。会话ID必须很长且随机,以免被猜到。设置cookie后,每个新的客户端请求都将发送带有会话ID的cookie。您的应用应存储当前会话ID,以便查看哪个用户正在发出请求,而无需再次进行身份验证。
有些框架会为您完成所有这些工作。如果您没有经验,我强烈建议您使用框架,或者至少仔细阅读备忘单。