CI - Set CSRF Hash and Cookie
2024-10-12 09:40:48
/**
* Set CSRF Hash and Cookie
*
* @return string
*/
protected function _csrf_set_hash()
{
if ($this->_csrf_hash === NULL)
{
// If the cookie exists we will use its value.
// We don't necessarily want to regenerate it with
// each page load since a page could contain embedded
// sub-pages causing this feature to fail
if (isset($_COOKIE[$this->_csrf_cookie_name]) && is_string($_COOKIE[$this->_csrf_cookie_name])
&& preg_match('#^[0-9a-f]{32}$#iS', $_COOKIE[$this->_csrf_cookie_name]) === 1)
{
return $this->_csrf_hash = $_COOKIE[$this->_csrf_cookie_name];
} $rand = $this->get_random_bytes(16);
$this->_csrf_hash = ($rand === FALSE)
? md5(uniqid(mt_rand(), TRUE))
: bin2hex($rand);
} return $this->_csrf_hash;
}
令牌(tokens)默认会在每一次提交时重新生成,或者你也可以设置成在 CSRF cookie 的生命周期内一直有效。———— 有安全隐患吧。 这样会减少服务器的负荷.
默认情况下令牌重新生成提供了更严格的安全机制,但可能会对 可用性带来一定的影响,因为令牌很可能会变得失效(例如使用浏览器的返回前进按钮、 使用多窗口或多标签页浏览、异步调用等等)。你可以修改下面这个参数来改变这一点。
$config['csrf_regenerate'] = TRUE; //这种情况下,每次提交表单后,都会重新生成token。(1) 重复提交一个页面会失败。(2)用浏览器的返回前进按钮,会因为令牌不一致出错。—— 生成了新的令牌值,而“后退”过去的那个页面不刷新的话,依然使用的是旧的令牌值!
将其设置为false即可。
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = false;
最新文章
- web前端性能优化
- 关于如何将Excel数据导入到SQL Server中
- 深入浅出Java并发包—锁机制(一)
- iOS UDID和UUID详解
- PYTHON queue
- Wormholes 最短路判断有无负权值
- border-radius讲解2
- fork,exec,source
- linux 安装所有软件可以使用这个网站搜索RPM包
- spring boot 的参数配置。
- iOS开发之--复制粘贴功能
- JavaSE学习总结(八)—— 异常处理(Exception)
- maven项目, 单元测试失败提示 Class not found datastorage........
- Python实现爬虫设置代理IP和伪装成浏览器的方法(转载)
- excel 数字转文本
- uva11383 转化为 二分图匹配
- DATASNAP远程方法返回TSTREAM正解
- 使用wblockCloneObjects从后台读取dwg文件复制实体到当前数据库
- 更新user的方法
- MySQL级联删除和级联修改