Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Codeigniter CSRF保护与标签

Codeigniter CSRF保护与标签
EN

Stack Overflow用户
提问于 2015-05-28 23:16:28
回答 1查看 781关注 0票数 5

在新的CodeIgniter v3中,CSRF令牌只有效一次。因此,我在处理多个选项卡时遇到了一些困难:

  1. 用Form1打开一个选项卡
  2. 用Form2打开一个选项卡
  3. 提交表格1的选项卡
  4. 提交表格2的选项卡

步骤4将导致CSRF错误。很明显这并不理想..。如何才能解决这一问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 04:11:17

背景

没有必要在每次表单提交时重新生成CSRF令牌。没有什么安全好处--如果攻击者可以从您的页面中检索令牌,那么他们已经赢了。这将使您的站点能够运行跨选项卡,而不会出错。

有关安全性方面的一些背景信息,请参阅此页面:为什么[您不应该]刷新每个表单请求的CSRF令牌?

CodeIgniter v3

v3使用名为csrf_regenerate的配置项。将其设置为FALSE,以防止在每个请求之后重新生成。

CodeIgniter v2

CodeIgniter使用的代码将在本文中讨论:CodeIgniter 2.0中的CSRF保护:更仔细的观察。有关守则如下:

代码语言:javascript
运行
AI代码解释
复制
function csrf_verify()
{
    // If no POST data exists we will set the CSRF cookie
    if (count($_POST) == 0)
    {
        return $this>csrf_set_cookie();
    }

    // Do the tokens exist in both the _POST and _COOKIE arrays?
    if ( ! isset($_POST[$this->csrf_token_name]) OR
         ! isset($_COOKIE[$this->csrf_cookie_name]) )
    {
        $this->csrf_show_error();
    }

    // Do the tokens match?
    if ( $_POST[$this->csrf_token_name]
         != $_COOKIE[$this->csrf_cookie_name] )
    {
        $this->csrf_show_error();
    }

    // We kill this since we're done and we don't
    // want to polute the _POST array
    unset($_POST[$this->csrf_token_name]);

    // Re-generate CSRF Token and Cookie
    unset($_COOKIE[$this->csrf_cookie_name]);
    $this->_csrf_set_hash();
    $this->csrf_set_cookie();

    log_message('debug', "CSRF token verified ");
}

只需从函数中删除以下代码:

代码语言:javascript
运行
AI代码解释
复制
// Re-generate CSRF Token and Cookie
unset($_COOKIE[$this->csrf_cookie_name]);
$this->_csrf_set_hash();
$this->csrf_set_cookie();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30523435

复制
相关文章
Laravel CSRF 保护
跨站点请求伪造(英语:Cross-site request forgery)是一种恶意利用,利用这种手段,代表经过身份验证的用户执行未经授权的命令。值得庆幸的是,Laravel 可以轻松保护您的应用程序免受跨站点请求伪造(CSRF)攻击。
崔哥
2023/04/30
1.4K0
CSRF跨站请求伪造保护demo
CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。
henu_Newxc03
2022/05/05
4920
CSRF跨站请求伪造保护demo
保护ASP.NET 应用免受 CSRF 攻击
CSRF是什么?   CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,
张善友
2018/01/19
1.2K0
保护ASP.NET 应用免受 CSRF 攻击
保护ASP.NET 应用免受 CSRF 攻击
  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。
全栈程序员站长
2022/07/05
6510
保护ASP.NET 应用免受 CSRF 攻击
ThinkPHP-CSRF 保护和安全性
CSRF(Cross-Site Request Forgery)攻击是一种常见的Web安全漏洞。攻击者利用受害者在未经授权的情况下执行恶意请求的漏洞,从而实现对受害者的攻击。为了防止这种攻击,ThinkPHP提供了内置的CSRF保护机制。
堕落飞鸟
2023/05/02
9430
[CodeIgniter4]-CodeIgniter URL
在默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和用户友好的样式。 不同于使用传统的在动态系统中使用代词的标准 “查询字符串” 的方式,CodeIgniter 使用基于段的方法:
landv
2020/03/05
2.3K0
【自学自用】CodeIgniter的学习与记录
下载https://codeigniter.org.cn/user_guide/installation/downloads.html
一朵灼灼华
2022/08/05
4920
CodeIgniter自学之旅-入门与简单应用
由于最近被 StartBBS吸引,但其简单的编辑器用起来不太爽,想换成富文本的,但无php经验,故只能先自学相关内容。
WindCoder
2018/09/20
1.2K0
Django 安全之跨站点请求伪造(CSRF)保护
默认的CSRF中间件在MIDDLEWARE中定义并处于激活状态。如果需要变更默认配置,修改settings.py中的MIDDLEWARE配置即可,如下,假设要开启CSRF,确保列表包含 'django.middleware.csrf.CsrfViewMiddleware',并且其位置位于其它会对CSRF攻击进行处理的中间件之前,假设要禁用CSRF中间件,去掉列表中的'django.middleware.csrf.CsrfViewMiddleware',或者采用注释方式,把 'django.middleware.csrf.CsrfViewMiddleware' 注释掉。注意:更改配置后需要重启web服务器。
授客
2020/09/08
1.2K0
CSRF——攻击与防御
CSRF——攻击与防御 author: lake2 0x01 什么是CSRF攻击 CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思,也就是在用户会话下对某个CGI做一些GET/POST的事情——这些事情用户未必知道和愿意做,你能够把它想做HTTP会话劫持。 站点是通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,仅仅要不关闭浏览器或者退出登录,以后訪问这个站点会带上这个c
全栈程序员站长
2022/07/05
5740
CSRF攻击与防御
CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。
HACK学习
2019/08/07
1.1K0
CSRF攻击与防御
CSRF攻击与防御
1、假若客户端已经验证并登陆www.game.com网站,此时客户端浏览器保存了游戏网站的验证cookie
丁D
2022/08/12
1.1K0
CSRF攻击与防御
CSRF攻击与防御
  CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造(伪造跨站请求【这样读顺口一点】)
那一叶随风
2018/08/22
1.6K0
CSRF攻击与防御
CSRF攻击与防御
跨站请求伪造(Cross-site request forgery)简称为 CSRF。这种攻击方式很奇特,它是伪造用户的请求发动攻击的,在 CSRF 攻击过程中,用户往往在不知情的情况下构造了网络请求。
多云转晴
2020/07/10
1.9K0
高版本 jenkins 关闭跨站请求伪造保护(CSRF)
根据官网描述,Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能。 从较旧版本的 Jenkins 升级的实例将启用 CSRF 保护和设置默认的发行者,如果之前被禁用。
特特
2022/02/10
2.4K0
CSRF的原理与防范
CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。
fastmock
2022/07/13
7020
CSRF漏洞详解与挖掘
CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。
天钧
2019/07/30
1.7K0
CSRF漏洞的原理与防御
CSRF 全称:Cross Site Request Forgery,译:跨站请求伪造
Mshu
2020/06/29
8150
CSRF漏洞的原理与防御
CI一些优秀实践
最近准备接手改进一个别人用Codeigniter写的项目,虽然之前也有用过CI,但是是完全按着自己的意思写的,没按CI的一些套路。用在公众的项目,最好还是按框架规范来,所以还是总结一下,免得以后别人再接手的时候贻笑大方。 1. 首先是 MVC 如果你还不知道 MVC ,应该尽快的学习,你会很快的体会到在 Model 中数据访问,在 Controller 中进行业务逻辑,在 Views 中编写 HTML 代码的价值。如果你之前没有使用过这种模式写过程序,你也许会皱起额头,不过你应该给自己尝试这样做的机会。 一
wangxl
2018/03/07
3.4K0
点击加载更多

相似问题

CSRF保护Codeigniter

10

Codeigniter AJAX CSRF保护

13

Codeigniter csrf保护错误:

31

CodeIgniter CSRF保护和页面缓存

10

Codeigniter csrf保护,无需表单验证

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文