代码之家  ›  专栏  ›  技术社区  ›  xkeshav

是否有可能通过selectbox(动态创建或静态)进行SQL注入?

  •  0
  • xkeshav  · 技术社区  · 14 年前

    我想知道是否有可能通过选择框选项进行SQL注入? 如果是,那么你会展示一些示范(或参考任何链接)。 还告诉我如何防止selectbox中的SQL注入(使用php-mysql)。

    再一个: 如果我动态地创建一个select box(基于另一个select box的选项),那么有没有可能进行sqlInjection?

    谢谢你。

    3 回复  |  直到 14 年前
        1
  •  7
  •   Emil Vikström    14 年前

    对。攻击者只需编写自己的HTML表单并将其发布到您的URL。甚至还有一个火狐插件(WebDeveloper工具栏),可以在任何页面上将选择字段更改为文本框。

    您永远不能信任浏览器发送的数据($_get,$_post,$_cookie,$_request)。始终清除输入内容。

        2
  •  2
  •   Dean Harding    14 年前

    是的,仍然有可能使用选择框进行SQL注入。回发后,客户机实际上可以在选择框的字段中放入他们喜欢的任何内容,而不是 不得不 成为列表中的值之一。

    无论输入来自何处,您都应该始终验证输入。现在,除了针对SQL注入(例如参数化查询等)的“标准”防御之外,通过选择框,您可以添加一个额外的检查,确认回发的值实际上是我们在列表中的第一个值之一(这假设您的客户机上没有修改可能值列表的javascript,即奥尔斯)

        3
  •  0
  •   kainosnous    14 年前

    注入不是通过窗体完成的,而是通过处理窗体的PHP完成的。一个人可以将任意数据作为名称/值对发送到您的代码中,而您将无法知道它是来自选择框、输入字段,还是仅仅是现场合成的。 总是 验证来自表单的任何数据。总是假设它被破坏了。

    选择框可以帮助您知道应该发送哪些值。如果发送的值不在这个小集合中,那么您知道正在发生一些有趣的事情,您可以安全地丢弃所有输入并给出错误。验证代码中的所有内容是很好的。否则,你就是在自找麻烦,甚至可能是因为你不小心做了什么。