这种 PHP 判断漏洞 BUG 是不是无解了?
資深大佬 : jiangchuankyo 0
<?php
header(“Content-type: text/html; charset=gbk”);
$a = ‘度和’;
if(strpos($a, ‘群’)) {
echo ‘存在’;
}else{
echo ‘不存在’;
}
?>
header(“Content-type: text/html; charset=gbk”);
$a = ‘度和’;
if(strpos($a, ‘群’)) {
echo ‘存在’;
}else{
echo ‘不存在’;
}
?>
文件是 GBK 的, 判断显示存在, 这是我在写敏感词过滤时无意发现的, 这种 BUG 太严重了,
因为度的后半个字与和的前半个字切割下来就是群字, 当然存在这种 BUG 的字是数不胜数的, 这个只是我偶然才发现的其中之一,
同样测试, str_replace, preg_match(), strstr() 等一切与字符串沾边的函数都具有该 BUG,
如果你的文件是 GBK 编码, 或就算是 UTF8 编码但你处理的字符串是 GBK 是也会有该 BUG, 这种底层编码 BUG 是不是无解的
大佬有話說 (2)