【发布时间】:2017-12-21 02:00:09
【问题描述】:
我正在开发 php 中的用户登录/注册功能。我想防止会话劫持和 CSRF 攻击。我脑子里有些困惑,正在寻找答案来澄清这些:
详情
注册:表单数据在客户端用 jQuery 进行验证,然后转换为 json 对象并通过 ajax 调用发送。并且数据也在服务器端进行验证,然后注册用户。用户注册后,将使用 random_bytes(); (PHP 7) 函数创建会话令牌,并将 LoggedIn 设置为 true。
$_SESSION['LoggedIn'] = true;
$_SESSION['Token'] = random_bytes(32);
我知道,我需要检查每个私人(成员区域)页面顶部的有效会话。但我不明白目的。以下是我脑海中出现的问题:
- 我应该将会话令牌作为隐藏字段发送并针对每个请求进行验证吗?
- 我需要设置 cookie 吗?
- 如何将会话令牌与 cookie 一起使用以使其更安全?
- 如何确保 ajax 请求在服务器端有效?我还需要为访问者生成会话令牌吗?
- 我想保持一个星期的活动会话,所以我需要将会话令牌保存在数据库中吗?
【问题讨论】: