在脚本标记中嵌入json的安全方法

时间:2017-08-10 19:54:46

标签: javascript json reactjs xss serverside-rendering

假设我的html文档中有以下脚本标记:

{{ book.title }}
{{ book.date }}
{{ book.xml }}
{{ book.cover }}

我正在我的应用程序中解析这个JSON。有人告诉我......

  

这种在脚本标记中嵌入json的方法存在潜在的安全问题。假设json数据源自用户输入,则可以创建一个数据成员,该成员实际上会脱离脚本标记并允许直接注入dom。见这里:

<script type="application/json" id="stuff">
    {
        "unicorns": "awesome",
        "abc": [1, 2, 3]
    }
</script>

我需要在脚本标记中嵌入JSON,但我不知道应该如何做,而不会泄漏安全漏洞。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

因为javascript本身就是在客户端运行的,所以你永远不会相信客户端对它做的任何事情。

因此,这听起来像是用户输入或可能用户输入,就像您在服务器上执行的一切一样,这意味着您必须对发送给您的任何用户输入进行适当的审查。据我所知,dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.squareup.picasso:picasso:2.5.2' <!--Added Here--> compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' 被认为是体面的安全。因此,应该使用它来解析发送到您服务的任何对象。

在此之后,你可能需要做更多的输入清理工作。确保在将其打印到浏览器时始终转义HTML。