问题描述
我正在研究跨站脚本 (XSS) 漏洞,这里有一个问题:
如果有 str_replace "
if (isset($_GET["username"])) {
$user = str_replace("<","",$_GET["username"]);
echo "Your name is "."$user";
}
您还能传入 <b onmouSEOver=alert('Ha-Ha-Ha!')>click me!</b>
或 <script>alert('Ha-Ha-Ha')</script>
以便脚本执行吗?
解决方法
未指定字符集,因此可能有一些使用不同编码绕过过滤器的方法。在较旧的浏览器中,可以使用 UTF-7,如下所述:http://michaelthelin.se/security/2014/06/08/web-security-cross-site-scripting-attacks-using-utf-7.html
,使用htmlspecialchars()
方法
- 这个功能你需要什么
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
- 您可以查看 w3schools 处理表 https://www.w3schools.com/php/php_forms.asp
- 也使用 post 方法,它比 get 更安全