JSON 解析和安全性

JSON parsing and security

本文关键字:安全性 JSON      更新时间:2023-09-26

我们的基础设施使用Python作为后端的所有内容,Javascript用于我们的"前端"(这是我们为其他站点提供的库)。基础结构的不同组件之间的通信是通过 JSON 消息完成的。

在 Python 中,json.load()json.dump() 是处理 JSON 字符串的安全方法。在Javascript中,JSON.parse()将被改用。但是,这些函数只能保证字符串具有正确的 JSON 格式,对吗?

如果我担心注入攻击,我需要通过其他方式清理 JSON 的每个字段。我这个假设是对的吗?或者只是通过使用前面提到的功能,我们会很安全?

如果输入字符串不是有效的 JSON 格式,JSON.parse将引发异常。使用起来很安全,我想不出任何方法可以仅用 JSON.parse 攻击您的代码。它不像eval那样工作.

当然,您可以检查生成的 json 对象,以确保它具有您期望的结构。

没有上下文,就没有经过净化和未经净化的数据。

仅当用户控制的数据在具有特殊含义的上下文中使用时,数据才被视为不安全。

例如 '在SQL中,<script>在HTML中。

与SQL中的<script>相反,这是完全安全的。

结果是在使用数据时进行编码/清理,而不是在从 JSON 接收数据时进行编码/清理。