【问题标题】:Does escaping output prevent SQL Injections in any way?转义输出是否以任何方式阻止 SQL 注入?
【发布时间】:2014-05-17 10:08:33
【问题描述】:

我正在准备 Zend PHP 5.5 认证,我在学习指南中发现了一个似乎有错误答案的问题。 我只是不明白 - 他们的问题或答案是否有错误,或者转义输出是否会以任何方式阻止 SQL 注入?

我在网上搜索,但找不到任何信息来证明这一点。

如果转义输出确实可以防止 SQL 注入,任何人都可以解释一下到底是怎么回事吗? 能举个例子就好了。

非常感谢。

编辑:

我的问题不是关于如何防止 SQL 注入,而是输出转义是否以任何方式防止 SQL 注入,所以请不要将我的问题标记为重复。 重复的问题不会给我任何答案。

【问题讨论】:

  • 您不能将输出理解为仅发送给用户的数据。
  • 我认为问题中有一个错字(Zend 错误),他们的意思是“输入”而不是输出,即 :)
  • 这都是关于 XSS 的。 不知道它会如何影响 SQL。 我认为这完全取决于output 的定义。 >(可能是错字).
  • @SveatoslavCircel 不管他们是什么意思,输入或输出 - 都无济于事。
  • 输出是离开某个系统/进程/组件的东西。如果您构建 SQL 并将其传递给您的数据库服务器,我也会考虑该输出。

标签: php sql security output sql-injection


【解决方案1】:

我的问题不是关于如何防止 SQL 注入,而是输出转义是否以任何方式防止 SQL 注入,所以请不要将我的问题标记为重复。重复的问题不会给我任何答案。

好的,您的问题的答案是“否”。另见:

在处理注入的查询后是否转义输出并不重要,如果我可以将恶意软件写入您的文件系统并直接访问它。

学习指南错了。

【讨论】:

    【解决方案2】:

    我认为这完全是解释问题:如果您将术语 输出 解释为“离开某个系统/流程/组件/功能的数据”和 转义关于 SQL '*_escape_string 或类似函数应用于放入 SQL 代码中的值',那么,是的,输出转义可能帮助保护您免受 SQL 注入。

    请注意,它表示“可能有帮助”,因为在某些情况下此类函数无济于事,尤其是在字符串文字中未使用转义值时。

    【讨论】:

      猜你喜欢
      • 2011-12-27
      • 2015-06-04
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      相关资源
      最近更新 更多