[web安全]XSS可能发生的场景及解决方法
来源:互联网 发布:mysql 数据库快照 编辑:程序博客网 时间:2024/06/07 18:18
跨站脚本攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
1.在HTML标签中输出
<div>$var</div><a href=# >$var</a>
在这种场景下,XSS的利用方式一般是构造一个<script>标签,或者是任何能够产生脚本执行的方式。
<div><script>alert(/xss/)</script></div>
<a href=# ><img src=# onerror=alert(1) /></a>
2.在HTML属性中输出
<div id="abc" name="$var" ></div>
灵活构造XSS PAYLOAD
<div id="abc" name=""><script>alert(/xss/)</script><"" ></div>
3.在<script>标签中输出
<script>
var x = "$var";
</script>
攻击者需要先闭合引号才能实施XSS攻击
<script>
var x = "";alert(/xss/);//";
</script>
4.在事件中输出
<a href=# onclick="funcA('$var')" >test</a>
可能的攻击方法
<a href=# onclick="funcA('');alert(/xss/);//')" >test</a>
5.在CSS中输出
<style type="text/css">
body {background-image:url(${xss});}
body {background-image:expression(${xss});}
</style>
在CSS中输出同样存在XSS的风险,如:
body {background-image:url("javascript:alert('XSS')");}
body {background-image:expression(alert(/xss/));}
6.1 在URL的path(路径)或者search(参数)中输出
<a href="http://www.evil.com/?test=$var" >test</a>
<a href="http://www.evil.com/?test=" onclick=alert(1)"" >test</a>
防御方法:使用URLEncode
6.2 整个URL能够被用户控制
这时URL的Protocol和Host部分是不能够使用URLEncode的
<a href="$var" >test</a>
攻击方法:
<a href="javascript:alert(1);" >test</a>
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=" >test</a>
防御方法:检查变量是否以"http"开头,再对变量进行URLEncode,OWASP中有函数ESAPI.encoder().encoderForURL(),但此API未解决伪协议的问题。
以上是最常见到的XSS场景,OWASP Esapi很好地解决了这些场景的安全问题,在OWASP Esapi "org.owasp.esapi.codecs"包中提供了一系列的编码操作,其中包括HTML编码、JavaScript编码、VBScript编码、CSS编码、SQL编码等。
1.HTML编码操作
对于HTML编码,可以使用下面的接口:
String str = ESAPI.encoder().encodeForHTML(String input);
使用这个接口可以对字符串进行HTML编码,它采用的编码器是HTMLEntityCodec。
而且OWASP还有专门应用对HTML属性的编码操作类,接口如下:
String str = ESAPI.encoder().encodeForHTMLAttribute(String input);
2.CSS编码
对输入、输出的CSS编码,接口如下:
String str = ESAPI.encoder().encodeForCSS(String input);
CSS编码器是CSSCodec
3.JavaScript编码
对输入、输出的JavaScript编码,接口如下:
String str = ESAPI.encoder().encodeForJavaScript(String input);
JavaScript编码是JavaScriptCodec类实现的。
OWASP ESAPI工具包是专门用来防御安全漏洞的API,如SQL注入、XSS、CSRF等知名漏洞。目前支持JavaEE、ASP、NET、PHP、Python等语言。
- [web安全]XSS可能发生的场景及解决方法
- Hibernate配置过程可能发生的问题及解决方法
- Hibernate配置过程可能发生的问题及解决方法
- Hibernate配置过程可能发生的问题及解决方法
- Hibernate配置过程可能发生的问题及解决方法
- Hibernate配置过程可能发生的问题及解决方法
- [web安全] XSS的防御
- [web安全] XSS的原理与分类
- Web安全之XSS
- Web安全之XSS
- web安全xss,
- web安全 xss攻击
- Web安全XSS&CSRF
- Web安全XSS
- Web安全之XSS
- Web安全之XSS
- Web安全之XSS
- WEB安全 CSRF/XSS
- 插入排序
- ArcGIS教程:3D 数据的基础知识
- inux 命令行 光标移动技巧
- POJ1741 Tree
- hibernate二级缓存攻略
- [web安全]XSS可能发生的场景及解决方法
- 第8周-项目3-分数类中的运算符重载(续)-++、--、>>、<<
- 自定义UIImageView的滑动
- 软件应用之EXCEL容量增大的原因及解决办法
- Could not find class 'android.support.v4.app.NotificationCompat$BigTextStyle', referenced from metho
- Java 小技巧
- 8.tableView右边的检索 创建xib方式 awakeFromNib
- 人脸识别
- WebLogic和Myeclipse的整合部署