PHP:使用_GET数据需要进行任何消毒吗?

时间:2010-12-29 23:09:14

标签: php sanitization

只需在我的PHP代码中定期使用即可。不喜欢我将它传递给我的查询或任何东西。

5 个答案:

答案 0 :(得分:7)

  • 如果将它们传递给SQL查询,则会获得SQL注入
  • 如果您使用它们来形成文件名,则会出现任意文件读取漏洞
  • 如果您按原样将其作为HTML页面的一部分输出给用户,则会出现XSS漏洞
  • 如果将它们输出到文件,如果文件格式错误,可能会收到格式错误的文件
  • 如果您只是将该值与一组预定义值进行比较,那么就没问题了。
  • 如果您将其转换为数字,只要任何数字适合您,您就可以了

答案 1 :(得分:2)

只有逐步完成代码并准确查看其功能,才能真正解决这个问题。您的代码中可能存在陷阱(例如构建严重的switch语句)可能需要进行卫生处理。

除了数据库查询之外,您需要清理传入数据的一般方案包括:

  • 在文件名中使用
  • 使用它来包含文件
  • 使用它将参数传递给通过exec()
  • 执行的程序
  • 将其输出为HTML

答案 2 :(得分:0)

您需要应用程序及其安全性所需的任何内容,请记住,您可以在$_GET参数中获得任何(或不执行任何内容)。也许您没有在查询中使用该值,但是如果您盲目地使用页面中的值,则可能会受到跨站点脚本攻击。 “无害”网站很容易陷入跨网站脚本攻击。

永远不要相信用户输入,是吗?

答案 3 :(得分:0)

您需要根据变量的内容及其使用来清理变量。

所以如果你有一个这样的变量:

  • $_GET['page_id']

您在数据库中使用,然后进行消毒。

如果您有这样的变量:

  • $_GET['action']

您计划使用

  • require_once "pages/" . $_GET['action'] . ".php"

然后在你这样做之前进行消毒,否则只要确保register_globals已经关闭,只要你没有在没有经过深思熟虑的地方使用它们就可以了。

答案 4 :(得分:0)

所有不是来自您服务器的东西都应该消毒!这包括$_GET, $_POST, $_SERVER仅举几例。