前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSRF攻击

CSRF攻击

作者头像
wade
发布2020-04-23 16:15:20
1.2K0
发布2020-04-23 16:15:20
举报
文章被收录于专栏:coding个人笔记

CSRF叫做跨站请求伪造攻击,也有叫XSRF的,其实都差不多,你也可以认为是XSS和CSRF的结合。对于这个攻击原本我是不怎么理解的,写了个接口,然后试了一下,直接就发起了请求。

先看接口:

代码语言:javascript
复制
const http=require('http');
http.createServer(function(requset,response){
 response.setHeader('Access-Control-Allow-Credentials', 'true');
 response.end('123');
}).listen(3000);

当我用图片地址访问的时候,出现:

代码语言:javascript
复制
A cookie associated with a cross-site resource at was set without the `SameSite` attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with `SameSite=None`

大概意思就是不允许携带cookie,如果我设置了:

代码语言:javascript
复制
response.setHeader('Set-Cookie', 'a=888;Path=/;SameSite=Lax');

然后用img标签请求成功了:

代码语言:javascript
复制
<img src="http://192.168.164.31:3000/" alt="">

虽然cookie没有携带,不知道是不是这个原因:

Chrome 计划将Lax变为默认设置。这时,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。

写不出好的接口去验证,于是只好不求甚解的简单理解一下,就是用户通过访问安全网站,进行登录,登录成功后,用户验证登录的信息记录在了浏览器,这时候用户在安全网站可以正常操作,之后要是用户在同一个浏览器访问不安全网站,不安全网站通过各种方法通过安全网站的用户登录信息进行攻击,比如:

1、当安全网站A登录之后,不安全网站B通过img、script等不会跨域的元素调用get请求的接口,如果是通过请求携带cookie判断的话,直接就可以请求成功。

2、如果后台是POST接口,校验数据用的也是post才能获取参数,不安全网站B可以通过ifram嵌入安全网站A,然后通过form表单提交请求。

这是一般我们认知的简单CSRF,有资料说,可以触发请求的方法达到了几百种,单单HTML就有196种。还有什么PDF JavaScript、ServiceWorkers等奇奇怪怪的方法去进行XSRF攻击。

有攻击就有防御方法,检查Referer、添加校验token、不保存cookie、不使用全局cookie、自定义header属性并校验等等。

虽然不知道CSRF攻击是不是真的那么简单,突然发现自己做过的项目好像并没有想象中的那么安全,感觉随便都能被攻击了。

(完)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding个人笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档