我尝试在通过 URL 传递参数时删除特殊字符,以避免被入侵者注入,例如我有以下 URL:
www.sitename.com/people?job=manager
Run Code Online (Sandbox Code Playgroud)
我alert在参数后面添加了一个脚本,如下所示:
www.sitename.com/people?job=manager"/><script>alert%2844749%29<%2fscript>
Run Code Online (Sandbox Code Playgroud)
当我运行该 URL 时,将alert弹出,这可能会导致通过此技术检索站点信息时出现漏洞。我将使用$_REQUEST获取传递参数来生成结果。我可以在下面应用这种方法来逃避 URL 注入技术吗?
$job = $_REQUEST["job"];
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议。
小智 5
您需要在所有变量上使用htmlentities()orhtmlspecialchars()与参数。ENT_QUOTES
例如对于$job:
$job = htmlentities($_REQUEST["job"], ENT_QUOTES);
Run Code Online (Sandbox Code Playgroud)
不需要转义 url 参数中的特殊字符。