1.XSS是什么
XSS攻击全称跨站脚本攻击(Cross Site Scripting).是一种常见于 Web 应用中的计算机安全漏洞。
2.XSS出现的常见原因
大部分的 XSS 漏洞都是由于没有处理好用户的输入,导致恶意脚本在浏览器中执行。
3. XSS 攻击分类
反射型(常见于服务端没有对这些数据进行过滤、验证或者编码,直接将用户输入的数据呈现出来)、持久型(通常是因为服务器端将用户输入的恶意脚本没有经过验证就存储在数据库中,并且通过调用数据库的方式,将数据呈现在浏览器上,当页面被用户打开的时候执行,每当用户打开浏览器,恶意脚本就会执行。)、DOM 型( DOM Based XSS )通常使用script标签载入第三方恶意脚本
4.XSS 常见攻击方法
1、绕过 XSS-Filter,利用 <> 标签注入 Html/JavaScript 代码;
2、利用 HTML 标签的属性值进行 XSS 攻击。例如:;(当然并不是所有的 Web 浏览器都支持 Javascript 伪协议,所以此类 XSS 攻击具有一定的局限性)
3、空格、回车和 Tab。如果 XSS Filter 仅仅将敏感的输入字符列入黑名单,比如 javascript,用户可以利用空格、回车和 Tab 键来绕过过滤,例如:;
4、利用事件来执行跨站脚本。例如:,当 src 错误的视乎就会执行 onerror 事件;
5、利用 CSS 跨站。例如:body {backgrund-image: url(“javascript:alert(‘xss’)”)};
6、扰乱过滤规则。例如:;
7、利用字符编码,通过这种技巧,不仅能让 XSS 代码绕过服务端的过滤,还能更好地隐藏 Shellcode;( JS 支持 unicode、eacapes、十六进制、十进制等编码形式);
8、拆分跨站法,将 XSS 攻击的代码拆分开来,适用于应用程序没有过滤 XSS 关键字符(如<、>)却对输入字符长度有限制的情况下;
9、DOM 型的 XSS 主要是由客户端的脚本通过 DOM 动态地输出数据到页面上,它不依赖于提交数据到服务器,而是从客户端获得DOM中的数据在本地执行。容易导致 DOM 型的 XSS 的输入源包括:Document.URL、Location(.pathname|.href|.search|.hash)、Document.referrer、Window.name、Document.cookie、localStorage/globalStorage;
5.XSS 如何防御?
1、使用 XSS Filter
2、html 实体
3、JavaScript编码
4、Http Only cookie
6.CSRF
7.CSRF是什么
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF
8.CSRF攻击攻击原理及过程如下:
9.CSRF漏洞检测:
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
10.防御CSRF攻击
目前防御 CSRF 攻击主要有三种策略:
验证 HTTP Referer 字段;
在请求地址中添加 token 并验证;
在 HTTP 头中自定义属性并验证。