gpt4 book ai didi

php - 不是 XSS 漏洞的 UTF-8 字符

转载 作者:可可西里 更新时间:2023-11-01 13:09:07 25 4
gpt4 key购买 nike

我正在研究编码字符串以防止 XSS 攻击。现在我们想使用白名单方法,白名单之外的任何字符都将被编码。现在,我们正在使用“(”之类的东西并输出“(”。据我们所知,这将阻止大多数 XSS。

问题是我们有很多国际用户,当整个站点都是日文时,编码就成了主要的带宽消耗。可以肯定地说,基本 ASCII 集之外的任何字符都不是漏洞,它们不需要编码,还是 ASCII 集之外的字符仍然需要编码?

最佳答案

如果你只是将编码传递给 htmlentities() 可能会(很多)容易/htmlspecialchars

echo htmlspecialchars($string,  ENT_QUOTES, 'utf-8');

但这是否足够取决于您打印的内容(以及打印位置)。

另见:
http://shiflett.org/blog/2005/dec/googles-xss-vulnerability
http://jimbojw.com/wiki/index.php?title=Sanitizing_user_input_against_XSS
http://www.erich-kachel.de/?p=415 (德语。如果我在英语中找到类似的东西 ->更新)编辑:好吧,我想你可以在不流利的德语的情况下理解要点;)字符串

javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41)) 
通过 htmlentities() 不变。现在考虑类似
<a href="<?php echo htmlentities($_GET['homepage']); ?>"
的东西这将发送
<a href="javascript:eval(String.fromCharCode(97,108,101,114,116,40,39,88,83,83,39,41))">
到浏览器。归结为
href="javascript:eval(\"alert('XSS')\")"
虽然 htmlentities() 可以完成元素内容的工作,但它对属性来说就不太好了。

关于php - 不是 XSS 漏洞的 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com