我有自己的函数xss,它返回已清理的文本。我想知道,如果它足够了,或者我有一些错误
function xss($str,$html = false)
{
if($html){
//HTML Purfier called here
}else{
return str_replace(array('&','"',"'",'<','>'), array('&','"',''','<','>'), $str);
}
}
我不想使用strip_tags,因为它会删除所有代码。我想留下它们,但由保存实体替换。替换这些字符时会保存吗?
答案 0 :(得分:0)
您应该考虑可能有问题的其他一些字符。例如':'和';'。想象一下,你在标签属性(如href)中返回文本,然后攻击者可以使用类似“http://yoursite.com/blah/?parameter=javascript:alert(String.fromCharCode(65))”的内容,并将其反映为:
...
<a href="javascript:alert(String.fromCharCode(65))">
...
或者他可以使用';'如果有任何反映在那里,在脚本内开始一个新行。尽量覆盖所有可能存在问题的角色。