今天和朋友讨论网站安全问题,聊到了csrf和xss,刚开始对两者不是神明白,经过查阅与讨论,整理了如下资料,与大家分享.

CSRF(Cross-site request forgery):跨站请求伪造。

从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:

(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)

(2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。

案例:GET类型的 CSRF

 <img src="http:/10.10.10.10:8088/hi" />

案例:POST类型的 CSRF

  <iframe style="display:none" name="csrf-frame"></iframe>

  <form method='POST' action='http://www.bank.example/withdraw' target="csrf-frame" id="csrf-form">

    <input type='hidden' name='account' value='test1'>    

    <input type='hidden' name='amount' value='888'>   

    <input type='hidden' name='for' value='sam'>    

    <input type='submit' value='submit'>

  </form>

  <script>document.getElementById("csrf-form").submit()</script>

解决方案:

  1.每次请求带token校验

  2.验证 HTTP Referer 字段;

  3.在 HTTP 头中自定义属性并验证;

  4.Chrome浏览器端启用SameSite cookie

  5.短信验证码校验

XSS(Cross Site Scripting):跨域脚本攻击

XSS攻击的核心原理是:不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入),向你的页面注入脚本(可能是js、hmtl代码块等)。

最后导致的结果可能是:盗用Cookie破坏页面的正常结构,插入广告等恶意内容D-doss攻击

可以利用安全漏洞:通过富文本编辑器外联图片地址,因为引图的时候不判断图片地址,从而进行流量攻击,消耗大量流量

案例:

  http://127.0.0.1:5000/hello4?name=<script>alert('Bingo!')</script>

那么客户端收到的响应将变成下面的代码:

<h1>Hello,<script>alert('Gingo!')</script>!</h1>

当客户端收到响应后,浏览器解析这行代码就会打开一个弹窗,如下

1、编码:

  修复编码漏洞,对用户输入的数据进行HTML Entity 编码。把字符转换成 转义字符

2、过滤:

  移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。

  (总而言是,过滤掉一些不安全的内容)移除用户输入的Style节点、Script节点、Iframe节点。 (尤其是Script节点,它可是支持跨域的呀,一定要移除)。

3、校正

  避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签。

CSRF 和 XSS 的区别

区别一:

  CSRF:需要用户先登录网站A,获取 cookie。XSS:不需要登录。

区别二:(原理的区别)

  CSRF:是利用网站A本身的漏洞,去请求网站A的api。XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。

源码学习: https://github.com/koukay/csrf.git

参考资料:

From:https://www.daguanren.cc/post/csrf-introduction.html
From:https://blog.csdn.net/stpeace/article/details/53512283
CSRF 攻击的应对之道:https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf
WEB三大攻击之—CSRF攻击与防护:https://www.daguanren.cc/post/csrf-introduction.html
浅谈 CSRF 攻击方式:https://www.jianshu.com/p/ffb99fc70646
CSRF 攻击与防御:https://www.cnblogs.com/phpstudy2015-6/p/6771239.html
《白帽子讲web安全》CSRF 实例:https://www.jianshu.com/p/94fd1a5d5413
CSRF实例:https://blog.csdn.net/wst0717/article/details/81542289

CSRF跨站请求伪造与XSS跨域脚本攻击讨论的更多相关文章

  1. Web安全相关(一):CSRF/XSRF(跨站请求伪造)和XSS(跨站脚本)

    XSS(Cross Site Script):跨站脚本,也就是javascript脚本注入,一般在站点中的富文本框,里面发表文章,留言等表单,这种表单一般是写入数据库,然后再某个页面打开. 防御: 1 ...

  2. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  3. 21)django-csrf(跨站请求伪造)

    一:目录 1)简介及无CSRF时存在隐患 2)csrf原理 3)csrf 设置 4)Form提交(CSRF) 5)Ajax提交(CSRF) CSRF请求头 X-CSRFToken 二:csrf简介 c ...

  4. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程

    一.服务端请求伪造漏洞 服务端请求伪造(Server-Side Request Forgery),是指Web服务提供从用户指定的URL读取数据并展示功能又未对用户输入的URL进行过滤,导致攻击者可借助 ...

  5. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  6. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  7. 跨站请求伪造(CSRF 或者 XSRF)与跨站脚本(XSS)

    跨站请求伪造 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...

  8. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结(转载)

    转载自 https://blog.csdn.net/baidu_24024601/article/details/51957270 之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让 ...

  9. Web安全相关(二):跨站请求伪造(CSRF/XSRF)

    简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...

随机推荐

  1. 帝国cms插件 一键替换数据表中已发表文章的内容关键字

    你是不是也在优化网站,是不是网站发展了一段时间之后才来做优化的,这样当然就会导致已经发表文章里的内容关键字,不能得到替换了! 小编根据后台替换内容关键字的程序,重写了一段 通过运行单个页面就能直接替换 ...

  2. 论文解读(S^3-CL)《Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learning》

    论文信息 论文标题:Structural and Semantic Contrastive Learning for Self-supervised Node Representation Learn ...

  3. Bootstrap Blazor Table 组件(二)

    原文链接:https://www.cnblogs.com/ysmc/p/16128206.html 很多小伙伴在使用 Bootstrap Blazor Table组件的时候,都会有这样的一个需求: 我 ...

  4. npm 报错This is probably not a problem with npm. There is likely additional logging output above.

    报错This is probably not a problem with npm. There is likely additional logging output above. 安装了一个插件后 ...

  5. BurpSuite与Xray多级代理实现联动扫描

    Xray是长亭科技推出的,最经典的莫过于代理模式下的被动扫描,它使得整个过程可控且更加精细化: 代理模式下的基本架构为,扫描器作为中间人,首先原样转发流量,并返回服务器响应给浏览器等客户端,通讯两端都 ...

  6. js实时监听dom尺寸变化

    开发过程中总会遇到dom节点尺寸变化,去做一些相应的逻辑,第一想到的应该是用$(window).resize()去做,但是这个是监听浏览器窗口的所以这个时候要用 ResizeObserver Resi ...

  7. 1903021116—吉琛—Java第七周作业—客户类测试

    项目 内容 课程班级博客链接 19信计班 这个作业要求链接 第七周作业链接 博客名称 学号-姓名-Java第七周作业-客户类测试 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决 ...

  8. Java语言学习day38--8月13日

    ###11哈希表的数据结构 A:哈希表的数据结构:(参见图解) 加载因子:表中填入的记录数/哈希表的长度 例如: 加载因子是0.75 代表: 数组中的16个位置,其中存入16*0.75=12个元素 如 ...

  9. Istio实践(3)- 路由控制及多应用部署(netcore&springboot)

    前言:接上一篇istio应用部署及服务间调用,本文介绍通过构建.netcore与springboot简单服务应用,实现服务间调用及相关路由控制等 1..netcore代码介绍及应用部署 新建.netc ...

  10. ABP应用开发(Step by Step)-下篇

    测试 ProductAppService 类 启动模板附带测试基础架构,包括xUnit.Shouldly和NSubstitute库.它使用SQLite 内存数据库来模拟数据库,并为每个测试创建一个单独 ...