您现在的位置:首页 >> 前端 >> 内容

跨站点脚本XSS攻击介绍

时间:2017/9/2 9:27:00 点击:

  核心提示:跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。小demo。假设我们的一张名...

跨站点脚本(Cross-site scripting,XSS)是一种计算机安全漏洞类型,常见于 Web 应用程序。XSS 能够使攻击者向其他用户浏览的网页中输入客户端脚本。

小demo。

假设我们的一张名为 “test_form.php” 的页面中有如下表单:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

这里的$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。 
因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。

现在,如果用户进入的是地址栏中正常的 URL:”https://www.example.com/test_form.php“,上面的代码会转换为:

<form method="post" action="test_form.php">

这是正常的,是我们想要的。不过,如果用户在地址栏中键入了如下 URL:

https://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

在这种情况下,上面的代码会转换为:

<form method="post" action="test_form.php"/><script>alert('hacked')</script>

这段代码加入了一段脚本和一个提示命令。并且当此页面加载后,就会执行 JavaScript 代码(用户会看到一个提示框)。造成了xss攻击。

解决方法:使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"] 被利用。

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

 

作者:网络 来源:hcy48的博客