XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS。
为什么叫跨站脚本?简单来说,就是在一个网站上运行了该网站之外的js脚本(当然,开发者自已引用的可信源的js不算,比如使用了cdn的 jQuery )。
一个经典的例子
假设有一个搜索页面,关键字以Get方法传递。假设,搜索页面在输出结果时会无过滤的将用户的关键字回显到网页上,大致逻辑如下
//xss.php <?php if(isset($_REQUEST["wd"])) $wd=$_REQUEST["wd"]; if($wd){ echo "<div>关键字'$wd'搜索的结果如下:</div>" } ... ?>
然后搜索请求的链接是:
http://localhost/test/haker/xss.php?wd=<script>alert("xss")</script>
或者为了隐蔽编一下码:
http://localhost/test/haker/xss.php?wd=<script>alert("xss")</script>
在es6下,你甚者可以用unicode码点。
如果是在几年前,你的浏览器大致都会弹出一个窗口
然而,现在不行了,在chrome和safari下,如果发现响应中包含请求参数中相同的代码字符串,它们就会拒绝执行这些代码,你会收到如下的错误提示:
The XSS Auditor refused to execute a script in 'http://localhost/test/haker/xss.php?wd=ddd%3Cscript%3Ealert(%22xss%22)%3C/script%3E' because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header.
原文来自:http://www.jianshu.com/p/15fece7e1a3e
评论已关闭。