介绍
CSRF:(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF
XSS:(Cross Site Scripting),中文名称:跨站脚本攻击,人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,有人将跨站脚本攻击缩写为XSS
攻击类型介绍
CSRF类型
CSRF没有区分类型,都是一类挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法
XSS类型
分类:反射性、存储型、DOM型
- 反射性XSS:
通常这一类xss危害较低,对网站没有什么严重的影响,具体表现在用户在搜索框输入xss语句返回弹框,仅出现一次 - 存储型XSS:
存储型对网站危害较大,用户插入xss语句后,恶意语句会存入网站数据库中,用户访问过程都会出现弹框 - DOM型XSS:
DOM——文档对象类型利用浏览器的dom解析,更不容易被发现,可以更改页面布局
攻击方式
XSS的攻击方式
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。XSS攻击者可以使用户在浏览器中执行其预定义的恶意脚本,可劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等
CSRF的攻击方式
跨站请求攻击(CSRF),简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
防护措施
CSRF防护方法:
1、服务端进行CSRF防御
服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数
1、设置referer字段
并不是所有服务器在任何时候都可以接受referer字段,所以这个方法存在一定的局限性
2、设置验证码
在用户操作的过程中设置身份确认的验证码,该方法会很有用,不过验证码频繁的话会影响用户体验
3、设置token值
在用户请求中设置一个随机没有规律的token值可以有效的防止攻击者利用漏洞攻击,本质是冲着浏览器分不清发起请求是不是真正的用户本人,所以防范的关键在于在请求中放入黑客所不能伪造的信息。从而防止黑客伪造一个完整的请求欺骗服务器。
「防范措施」:验证码机制,验证来源站点,利用Cookie的SameSite属性,CSRF Token
XSS防护方法:
1、设置黑名单和白名单
内容安全策略略(Content Security Policy,CSP),实质就是⽩名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执⾏,⼤大增强了了⽹网⻚页的安全性
2、对用户输入进行过滤、入参字符过滤、出参字符转义
在 XSS 攻击中,攻击者主要是通过构造特殊字符来注⼊入脚本,所以对⽤用户的输⼊入进⾏行行检测就很有必要,并且需要在客户端与服务端都进⾏行行输⼊入检测,然后对⽤用户 输⼊入的数据进⾏行行转义。主要就是对输⼊入所包含的特殊字符进⾏行行转义,如 <,>, &,",’,来防⽌止 XSS 攻击。
3、设置httponly
由于很多 XSS 攻击都是来盗用 Cookie 的,因此还可以通过使用 HttpOnly 属性来保护我们 Cookie 的安全。通常服务器可以将某些 Cookie 设置为 HttpOnly 标志,HttpOnly 是服务器通过 HTTP 响应头来设置的
总结:除了以上策略之外,还可以通过添加验证码防止脚本冒充用户提交危险操作。而对于一些不受信任的输入,还可以限制其输入长度,这样可以增大 XSS 攻击的难度。
区别
- XSS:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等
- CSRF:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作
- 总的来说就是CSRF是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
参考
https://baike.baidu.com/item/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0/13777878?fr=aladdin
https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin