2009-12-09 83 views
0

想知道如果TRIM(),用strip_tags()和addslashes的组合()就足以过滤从$ _GET和$ _POST过滤用户输入

+0

这取决于你与你的GET做什么,并POST值。 – voyager 2009-12-09 03:33:55

回答

2

这取决于您希望执行哪种验证。

下面是一些基本的例子:

  • 如果数据将在MySQL的查询使用请确保对数据使用mysql_real_escape_query(),而不是addslashes()的。
  • 如果它包含文件路径,请务必删除“../”部分并阻止对敏感文件名的访问。
  • 如果您要在网页上显示数据,请确保在其上使用htmlspecialchars()。

但最重要的验证只接受你期待值,换言之:只允许数字值,当你期待号码等

1

简短的回答变量值:无。

长答案:这取决于。

基本上,你不能说如果没有考虑你想用它做什么,一定量的过滤是或不够的。例如,以上将允许通过“javascript:dostuff();”,这可能是好的,或者如果您碰巧在链接的href属性中使用GET或POST值之一,则可能不会。

同样,您可能有一个丰富的文本区域,用户可以在其中进行编辑,因此剥离标签不完全合理。

我想我想说的是,有一套简单的步骤来消毒数据,以便您可以将其交叉并说“已完成”。你总是必须考虑数据在做什么。

1

它高度依赖于你将要使用它的地方。

  • 如果您打算以HTML格式显示内容,请确保您正确指定了编码(例如:UTF-8)。只要你去掉所有的标签,你应该应该罚款。
  • 对于在SQL查询中使用,addslashes是不够的!例如,如果您使用mysqli库,则需要查看mysql::real_escape_string。对于其他DB库,请使用指定的转义函数!
  • 如果你打算在javascript中使用字符串,addslashes 不会就够了。
  • 如果您对浏览器错误偏执,请查看OWASP Reform library
  • 如果您在HTML以外的其他上下文中使用数据,则会应用其他转义技术。