XSS:REQUEST_URI 通过 htmlspecialchars() 运行 - 然后替换 &与 & - 足以防止XSS注入吗?
场景:
我想将 " ' < >
替换为 " ' < >< /code> 但保留“& 字符”
我正在处理的字符串是一个 URL,我希望 URL 参数由 &
分隔,而不是 < code>&。
示例解决方案:
$url = "/some/path?a=123&b=456"; // from $_SERVER["REQUEST_URI"];
$url = htmlspecialchars($url, ENT_QUOTES, 'ISO-8859-1', true);
$url = str_replace('&','&',$url);
问题:
如果我在页面上使用 $url
(例如 echo $url;
在 HTML 或 JavaScript 中)可以被 XSS 利用吗?
类似问题:
还有其他关于 SO 的帖子 XSS 和
htmlspecialchars()
但我不能 围绕“&”是否存在找到答案 字符(以及它可能的 htmlentities 允许)可能会使您暴露于 XSS。
Scenario:
I would like to replace: " ' < >
with " ' < >
but keep the "&" character.
The string I'm dealing with is a URL and I want URL parameters to be separated by &
, not &
.
Example Solution:
$url = "/some/path?a=123&b=456"; // from $_SERVER["REQUEST_URI"];
$url = htmlspecialchars($url, ENT_QUOTES, 'ISO-8859-1', true);
$url = str_replace('&','&',$url);
Question:
If I use $url
on my page (e.g. echo $url;
inside HTML or JavaScript) can this be exploited by XSS?
Similar Questions:
There are other posts on SO covering
XSS &htmlspecialchars()
but I can't
find an answer around whether the "&"
character (and the htmlentities it may
allow) can expose you to XSS.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Sijmen Ruwhof 提出了一个我认为相关的有趣观点:
http://www.php.net/manual/en/function.htmlentities.php#99896
Sijmen Ruwhof made this interesting point that I feel is relevant:
http://www.php.net/manual/en/function.htmlentities.php#99896
我曾经使用非常奇怪的代码来转义网址,但我打赌这可以做得更好,而且这还没有涵盖 html 特殊字符,它只是用于将网址保存到数据库。
}
I once used really weird code for escaping urls, but I bet this can be done better, furthermore this does not cover the html specialchars yet, it was just used for saving urls to the database.
}