CI - Set CSRF Hash and Cookie

/**
     * 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;
    }
时间: 2024-08-29 08:01:16

CI - Set CSRF Hash and Cookie的相关文章

cookie那些事

本文面向对cookie有基本了解的读者,小白出门左转   设置cookie (HTTP 响应头) Set-Cookie: {name}={value};path={path};domain={domain};expires={expires},secure;HttpOnly; (多个cookie就发送多个Set-Cookie头) 发送cookie (HTTP 请求头) Cookie: {name}={value};{name2}={value2} (多个cookie以";"号隔开) 请

JAVA年度安全 第六周 防止CSRF

本系列的译文暂停很久了,今后每周一篇直至完成 原文地址: http://www.jtmelton.com/2012/02/07/year-of-security-for-java-week-6-csrf-prevention-in-java/ Whatis it and why should I care? 跨站点请求伪造(CSRF)是指受害者当被一个网站授权后,在其未知觉的情况下被强行向这个网站发起一个未知的或者未期望的请求.网站的授权凭证通常以浏览器的cookie方式保存,每次请求会自动传送

ci框架操作数据库基本方法

授课过程中如果涉及到文件夹或目录时,可使用缩进进行演示: application |-----libraries |-----xxx_helper.php system |-----libraries |-----url_helper.php --------------------------------------------------------------------------------------------------------------------------------

ci 基础知识

//建立虚拟主机 2.下载完毕后,解压,并将其复制粘贴到程序的主目录(d:/wamp/xmall/),然后再将其重命名为"myshop",那么"myshop" 就作为ci项目名称存在了 3.为我们的ci项目搭建一个虚拟主机: 首先,找到httpd.conf配置文件,开启虚拟主机的配置 然后,找到httpd-vhosts.conf配置文件,进行虚拟主机的配置 最后,找到hosts配置文件,为我们的ci项目添加dns映射 4.在浏览器中输入 http://www.mys

利用Java编码北京PK10平台制作测试CSRF令牌验证的Web API

拙文是利用了Jmeter来测试北京PK10平台制作(www.1159880099.com)QQ1159880099 带有CSRF令牌验证的Web API:最近几天趁着项目不忙,练习了用编码的方式实现. 有了之前Jmeter脚本的基础,基本上难点也就在两个地方:获取CSRF令牌.Cookie的传递. 首先添加依赖,在POM.xml中添加以下内容: <!-- https:// mvnrepository.com/artifact/org.apache.httpcomponents/httpclien

nginx 在浏览器端保持cookie 一致

一般来说,我们在java中都通过如下代码进行用户登录后的服务端注册,并且在用户下次请求时无需再登陆一遍,这就是Servlet的Session.使用了这种Session策略,那么Web容器比如tomcat就为当前用户生成一个SessionID,并且以这个SessionID为索引,存储这个用户相关的键值对,比如用户名,登陆时间一类的.存储在服务器的内存中.同时再response里向用户浏览器中设置一个cookie,这个cookie的名字为jsessionid,内容为服务器生成的随机数SessionI

如何防止CSRF攻击?

CSRF攻击 CSRF漏洞的发生 相比XSS,CSRF的名气似乎并不是那么大,很多人都认为CSRF“不那么有破坏性”.真的是这样吗? 接下来有请小明出场~~ 小明的悲惨遭遇 这一天,小明同学百无聊赖地刷着Gmail邮件.大部分都是没营养的通知.验证码.聊天记录之类.但有一封邮件引起了小明的注意: 甩卖比特币,一个只要998!! 聪明的小明当然知道这种肯定是骗子,但还是抱着好奇的态度点了进去(请勿模仿).果然,这只是一个什么都没有的空白页面,小明失望的关闭了页面.一切似乎什么都没有发生…… 在这平

Spring-Security对CSRF攻击的支持

何时使用CSRF保护        什么时候应该使用CSRF保护?我们的建议是使用CSRF保护,可以通过浏览器处理普通用户的任何请求.如果你只是创建一个非浏览器客户端使用的服务,你可能会想要禁用CSRF保护.(即所有处理来自浏览器的请求需要是CSRF保护,如果后台服务是提供API调用那么可能就要禁用CSRF保护) 配置CSRF保护 CSRF保护默认情况下使用Java配置启用 @EnableWebSecurity public class WebSecurityConfig extends Web

Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板

Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东西可以理解为过滤管道,里面有个安全过滤管道: from django.middleware.csrf import CsrfViewMiddleware里面有四个常用的方法: process_request:客户端请求的通道,但当此方法里面有return时就不会再执行后面的方法,直接走process