【问题标题】:Secure method to store PHP object in MySQL database?在 MySQL 数据库中存储 PHP 对象的安全方法?
【发布时间】:2016-12-27 13:42:48
【问题描述】:

如何在 MySQL 数据库中安全地保存 PHP 对象?

如果您使用序列化和反序列化函数,您可能会遇到对象注入 (https://www.owasp.org/index.php/PHP_Object_Injection)。

是否有关于如何处理此问题的预定义标准?

注意 SQL 注入 =/= 对象注入!所以 PDO 是一个不同的故事!

【问题讨论】:

  • 使用反序列化没有错;不安全的是直接将用户输入传递给反序列化。无论如何,恕我直言,最好使用更便携的东西,如 JSON,将对象存储在数据库中。
  • @isalgueiro 说了什么;如果您的服务器正在序列化和反序列化对象,则没有问题,因为不涉及用户输入。

标签: php mysql security object owasp


【解决方案1】:

只需将其保存为文本。您可以使用序列化或 json_encode。

但是我建议使用 json_encode,因为如果您有灵活的 UI 或使用一些不错的前端框架,您可以直接在 ajax 帖子中返回它。

只要我的 2 美分。

【讨论】:

    【解决方案2】:

    您可以使用 json_encode 将 MySQL 中的对象保存为 JSON

    json_encode($object);
    

    然后你可以将它存储在 MySQL 中并使用 json_decode 将它作为对象启动我们

    $object = json_decode($result->object);
    

    另外,将 JSON 保存到 MySQL 数据库以将其存储为文本的最佳方法

    【讨论】:

    • JsonSerializable 不是更好吗?
    • 没有必要使用。只需 json_encode 并将您的对象保存在数据库中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2019-09-15
    • 2012-10-25
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多