网络令牌管理

时间:2014-06-09 16:41:44

标签: php security csrf

我正在用PHP构建网站。对于每个form标记,我添加token字段以防止CSRF攻击。

在每个页面中,我创建一个随机字符串并将其存储在会话中。

$_SESSION['form1_token'] = hash('sha512', uniqid(null, true));

HTML:

<form ...>
    <input type="hidden" value="<?php echo $_SESSION['form1_token']; ?>" />
    ....
</form>

然后我检查服务器端的值并从会话中删除令牌。

它工作正常,但如果用户导航到另一个页面而不发送表单,我该怎么办?永远不会删除令牌。

时间限制并不好,因为我的网页应该运行很长时间,并且需要刷新可能会很烦人。 所以我考虑在unload事件中发送请求以删除会话。但是具有一点网络知识的用户可以在每个浏览器中删除该事件。

如何正确管理令牌?

1 个答案:

答案 0 :(得分:0)

使用时间限制。把它设置成长的东西(比如一天)。如果页面设计为在那里停留的时间超过该页面,则将计时器上的Ajax请求发送到脚本,该脚本可延长数据库中令牌的生命周期。