Cas*_*are 8

由于以下几个原因,这是一个坏主意:

  • 首先,它假设您的输入将始终进入数据库并单独进入数据库.如果要在HTML输出中使用某些内容怎么办?或者在电子邮件中?或写入文件?或许多其他事情..你的过滤应始终是上下文敏感的.
  • 更重要的是,它鼓励大量使用GET,POST等,因为没有迹象表明它们已被过滤.如果有人看到你使用

    echo $ _POST ['name'];

    在页面上,他们怎么知道它被过滤了?或者甚至更糟......你确定它已经存在了吗?那个其他应用呢?你知道吗,你刚刚被交给谁?新开发者会做什么?他们甚至会知道过滤很重要吗?

  • +1.我的规则是,在*进入该媒体之前,立即对给定媒体进行消毒.因此,您只能在查询中使用它们之前立即转义字符串,*不要*在HTTP-> PHP转换中,就像有问题的php.net评论所示. (4认同)