php之XSS攻击

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

发表评论

评论已关闭。

相关文章

猜你喜欢