小编use*_*885的帖子

str_replace()对多字节字符串有危险吗?

鉴于某些多字节字符集,我是否正确假设以下内容不符合预期目的?

$string = str_replace('"', '\\"', $string);
Run Code Online (Sandbox Code Playgroud)

特别是,如果输入的字符集可能具有像0xbf5c这样的有效字符,那么攻击者可以注入0xbf22来获取0xbf5c22,留下一个有效字符后跟一个不带引号的双引号(").

有没有一种简单的方法来缓解这个问题,或者我是否首先误解了这个问题?

(在我的例子中,字符串进入HTML输入标签的value属性:echo'input type ="text"value ="'.$ string.'">';)

编辑:就此而言,像preg_quote()这样的函数呢?它没有charset论据,因此在这种情况下似乎完全没用.如果你没有选择将字符集限制为UTF-8(是的,这很好),你好像很残疾.在这种情况下可以使用哪些替换和引用功能?

php multibyte

23
推荐指数
2
解决办法
3万
查看次数

标签 统计

multibyte ×1

php ×1