安全认证中的CSRF

这篇具有很好参考价值的文章主要介绍了安全认证中的CSRF。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么叫做CSRF攻击

安全认证中的CSRF

简单地说,就是说恶意网站,虽然没有盗取你的用户名和密码信息,但是却可以伪装成你,然后登录到银行,或者等危险网站,模拟你进行操作。利用的就是cookies这个特性,即浏览器提供的这种简易的自动身份认证功能。

2、解决的办法

检查Referer字段
HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer字段应和请求的地址位于同一域名下。以上文银行操作为例,Referer字段地址通常应该是转账按钮所在的网页地址,应该也位于www.examplebank.com之下。而如果是CSRF攻击传来的请求,Referer字段会是包含恶意网址的地址,不会位于www.examplebank.com之下,这时候服务器就能识别出恶意的访问。

这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。

添加校验token
由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。

说明:

CSRF攻击的根源在于浏览器默认的身份验证机制(自动携带当前网站的Cookie信息),这种机制虽然可以保证请求是来自用户的某个浏览器,但是无法确保这请求是用户授权发送。攻击者和用户发送的请求一模一样,这意味着我们没有办法去直接拒绝这里的某一个请求。如果能在合法请求中额外携带一个攻击者无法获取的参数,就可以成功区分出两种不同的请求,进而直接拒绝掉恶意请求。在SpringSecurity中就提供了这种机制来防御CSRF攻击,这种机制我们称之为令牌同步模式。

客户访问的方式如下:

A 现在登录某银行的网站准备完成一项转账操作,转账的连接如下:

https: //bank .xxx .com/withdraw?account=blr&amount=1000&for=zhangsan

可以看到,这个连接是想从 这个账户下转账 1000 元到 zhangsan 账户下,假设 A没有注销登录该银行的网站,就在同一个浏览器新的选项卡中打开一个危险网站,这个危险网站中有一副图片,代码如下:

<img src=“https: //bank .xxx .com/withdraw?account=blr&amount=1000&for=lisi” />

一旦用户打开了这个网站,这个图片链接中的请求就会自动发送出去。由于是同一个浏览器并且用户尚未注销登录,所以该请求会自动携带上对应的有效的 Cookie 信息,进而成功完成一次转账操作。这就是跨站请求伪造。

这也就是所谓的跨站伪造请求。就是说这个请求是其他网站伪造的。那么能够携带的写信也就只有cookies了。

所以,令牌同步模式的解决思路如下:

对于前后端分离的系统而言,客户端输入用户名和密码以后,服务端除了要返回成功以外,还需要返回token,然后这个token会存储在cookie当中,同时,服务端也会保存一份。这样客户端再次发送请求时,需要带着这个token访问,服务端会对比客户端此时传送过来的token是不是我的token。那么这个过程,就是由前端浏览器在没有关闭页面时,前端项目存储的,然后二次请求会自己添加到请求当中。

而对于恶意网站这种跨域转发的请求,通常都是一个post的操作,而这个操作的过程,是没有事前获取post界面时就要的token的,所以直接的post请求在后端就是会被拒绝的。

传统web应用的处理思路如下:

安全认证中的CSRF

对于传统的web应用,为了防止CSRF,那么首先要去获取这个post的页面,在获取的过程中,服务端会生成token,并通过隐藏字段的方式提供给前端。然后前端再次提交这个真的post请求过去,就自动在页面当中携带了token。而跨域为请求,是直接发送post请求,因此只是带有用户名和密码,是没有token信息的。也就是说,如果是,第三方网站跳转过去,就是直接操作的界面,就算是有了cookie,认证通过了,但是因为没有这个请求字段,所以操作是无法成功的。也就是第三方的跳转,是没有人给他插入这个隐藏字段的。

这个过程,有一个非常好的类比,就是,这个过程,就是验证码的过程。文章来源地址https://www.toymoban.com/news/detail-404583.html

到了这里,关于安全认证中的CSRF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【 安全】什么是CSRF攻击?如何避免?开发的时候怎么预防?

    CSRF定义: 跨站请求伪造(英语:Cross-site request forgery)是一种对网站的恶意利用,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 CSRF跨站点请求伪造(Cross—Site Request Forgery) 跟

    2024年03月14日
    浏览(78)
  • Java中的单点登录原理与实现方案探究:深入了解安全与便捷的用户认证解决方案

    目录 1、什么是单点登录 2、单点登录的优势和应用场景 3、单点登录的原理和实现方式 3.1 传统的Cookie和Session实现方式 3.2 基于Token的实现方式 3.3 基于OAuth2的实现方式 4、单点登录的技术要点和关键问题 4.1 安全性考虑 4.2 用户体验优化 4.3 高可用性设计 5、Java中的单点登录实

    2024年01月23日
    浏览(46)
  • 中国国家信息安全产品认证证书 | CCRC信息安全服务资质认证

    中国信息安全认证中心是经中央编制委员会批准成立,由国务院信息化工作办公室、国家认证认可监督管理委员会等八部委授权,依据国家有关强制性产品认证、信息安全管理的法律法规,负责实施信息安全认证的专门机构。 中国信息安全认证中心为国家质检总局直属事业单

    2024年02月05日
    浏览(59)
  • 信息安全服务资质认证CCRC证书‖中国网络安全审查技术与认证中心

                                          中国网络安全审查技术与认证中心(英文缩写为:CCRC,原为中国信息安全认证中心)于2006年由中央机构编制委员会办公室批准成立,为国家市场监督管理总局直属正司局级事业单位。依据《网络安全法》《网络安全审查办法》及国家

    2024年02月13日
    浏览(42)
  • 【权限设计系列】「认证授权专题」微服务常见安全认证方案

    HTTP 基本认证 HTTP Basic Authentication(HTTP 基本认证)是 HTTP 1.0 提出的一种认证机制,这个想必大家都很熟悉了,不再赘述。 HTTP 基本认证的过程如下 客户端发送HTTP Request给服务器。 因为Request中没有包含 Authorization header,服务器会返回一个 401 Unauthozied 给客户端,并且在 Respo

    2023年04月15日
    浏览(41)
  • CISSP认证在左,OSCP认证在右,聊一聊网络安全认证

    主题:CISSP认证、OSCP认证 经常有人会问我这些问题: 该不该学这个认证? 这个认证含金量高吗? 是CISSP认证好、还是OSCP认证,还是有其他更好的? 另外也会有人这样说: 学习和考这些认证没用,还不如多实践。 其实这些问题,说到底都是这个问题: 认证到底是什么? 我

    2024年02月12日
    浏览(32)
  • 安全认证:

    1.  认证概述    为什么要有认证?     防止非法路由器接入企业内网的ospf路由器,保护内网安全 2.  认证方式      认证方式分为接口认证和区域认证,接口认证和区域认证没有本质的区别,接口认证是当区域内链路过多的情况下,接口认证配置较为繁琐,容易出错,此时

    2024年02月07日
    浏览(30)
  • ELK集添加安全认证

    1、elasticsearch集群启用SSL 编辑所有elasticsearch节点 elasticsearch/config/elasticsearch.yml 配置文件新增以下内容: 2、生成证书 注意:如果是在docker中部署的,需要进入到容器中进行操作 生成的证书默认都在 /usr/share/elasticsearch 目录下: 查看是否成功生成证书 把这两个证书移动到 /

    2023年04月17日
    浏览(26)
  • MongoDB的安全认证详解

    默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端的请求进行用户验证,这是非常危险的。 MongoDB官网上说,为了能保障MongoDB的安全可以做以下几个步骤: (1)使用新的端口

    2024年02月13日
    浏览(26)
  • 启用skywalking身份安全认证

    目录 1.  Nginx部署 1.1更新系统软件包 1.2安装EPEL存储库 1.3安装Nginx 2.  修改 Nginx 配置文件 2.1.     字段解释 3. 创建存储用户名和密码的文件 3.1 安装htpasswd工具 3.2 验证 4.  验证代理及身份认证 4. 常见报错及解决方法 4.1.     检查监听 4.2. 检查配置文件字段地址 4.3. 检查防

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包