【问题标题】:Using PHP to update/edit MySQL tables: result-sets stored as JSON objects. Do I still need prepared statements?使用 PHP 更新/编辑 MySQL 表:存储为 JSON 对象的结果集。我还需要准备好的陈述吗?
【发布时间】:2016-08-26 11:09:51
【问题描述】:

我的意思是为了安全。转换为 JSON 对象/从 JSON 对象转换对 MySQLi 有帮助吗?

我的意图是使用 MySQLi 语句并将所有内容作为 JSON 对象发送/接收(以便将来允许 Android 使用相同的调用和查询。)

我对这个问题的唯一关注是它的安全方面。如果我将所有内容与 MySQL 数据库的 JSON 对象相互转换,是否需要准备好的语句?

【问题讨论】:

  • 可能不会,但你为什么不使用它们呢。
  • Strawberry 写的——你可能不需要它,但你为什么要避免它呢?如果您有经常重复的查询,那么您只能从准备好的语句中受益,因此没有理由只在特定情况下使用它们 - 每次将某种参数传递给查询时,请使用准备好的声明。
  • 本身并没有真正避免它。我现在的 JSON 工作正常,它正在使用 MySQLi。我只是想知道...因为我所有其他数据库查询都使用 PDO 及其命名参数 :person_id:person_first_name 等。只是想知道我是否应该尝试在它们之上强制 PDO,因为我使用 JSON 相对较新对象。 (编辑:JSON 对象现在在网站上更像是一个测试阶段。)感谢您的输入!

标签: mysql security mysqli pdo prepared-statement


【解决方案1】:

您在数据库中存储什么样的数据并不重要。为了防止 SQL 注入,您需要参数化 SQL 中的所有变量输入。这些数据的来源没有区别。它是什么并不重要。

没有理由不使用准备好的语句。说真的,即使对于持续查询,您也不应该 100% 使用准备好的语句,这不是一个单一的原因。

但请记住,准备好的语句不能防止 SQL 注入。只有参数有帮助。在 SQL 中使用占位符并单独绑定数据。总是这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-19
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多