我有我自己的函数,叫做xss,它返回干净的文本。我想知道,这是否足够,或者我在那里有一些bug
function xss($str,$html = false)
{
  if($html){
    //HTML Purfier called here
  }else{
    return str_replace(array('&','"',"'",'<','>'), array('&','"',''','<','>'), $str);
  }
}我不想使用strip_tags,因为它删除了所有标签。我想保留它们,但替换为save实体。替换这些字符时会保存吗?
发布于 2013-08-14 02:21:37
您应该考虑一些其他可能有问题的字符。例如':‘和';’。假设您返回一个标记属性内的文本(如href),然后攻击者可以使用类似'http://yoursite.com/blah/?parameter=javascript:alert(String.fromCharCode(65))(http://yoursite.com/blah/?parameter=javascript:alert(String.fromCharCode(65%29%29)‘的内容,这将反映为:
...
<a href="javascript:alert(String.fromCharCode(65))">
...或者他可以使用';‘在脚本中开始一个新的行,如果有任何东西反映在那里的话。尝试覆盖所有可能存在问题的字符。
https://stackoverflow.com/questions/18097527
复制相似问题