如果有str_replace,有没有可能做XSS?

问题描述

我正在研究跨站脚本 (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;
}