JSON 安全:保护您的应用程序

jsonsecuritybest-practices

虽然 JSON 本身是安全的,但不当处理可能引入安全漏洞。以下是需要注意的事项和保持安全的方法。

JSON 注入

永远不要通过字符串拼接用户输入来构建 JSON。始终使用正确的序列化:

// ❌ 危险

const json = '{"name":"' + userInput + '"}';

// ✅ 安全

const json = JSON.stringify({ name: userInput });

JSON 劫持

旧版浏览器容易通过数组字面量进行 JSON 劫持。现代浏览器已修复此问题,但始终在 API 响应的顶层返回对象(而非数组)。

通过大型负载进行拒绝服务攻击

恶意用户可以发送极大的 JSON 耗尽内存:

  • 设置最大请求体大小
  • 对大型 JSON 使用流式解析器
  • 在处理前验证结构
  • 原型污染

    使用 eval() 解析不受信任的 JSON 可能导致原型污染。始终使用 JSON.parse()

    // ❌ 永远不要这样做

    const obj = eval('(' + jsonString + ')');

    // ✅ 始终使用 JSON.parse

    const obj = JSON.parse(jsonString);

    Content-Type 头

    始终设置正确的 Content-Type 头:

    Content-Type: application/json

    这可以防止浏览器将 JSON 响应解释为 HTML 或脚本。

    使用我们的 JSON 查看器 在浏览器中安全检查 JSON 数据。

    相关工具