gpt4 book ai didi

c# - Json.NET SerializeObject 转义值以防止 XSS

转载 作者:IT老高 更新时间:2023-10-28 12:52:49 25 4
gpt4 key购买 nike

使用 Json.NET

JsonConvert.SerializeObject(new { Property = "<script>alert('o hai');</script>" })

返回

{"Property":"<script>alert('o hai');</script>"}

值是否可以被 SerializeObject 转义以防止恶意脚本执行?我不希望对对象本身进行更改。

编辑:理想情况下,我希望将清理功能集成到 SerializeObject 调用中,而不必在 SerializeObject 之前或之后处理对象。

编辑:JsonConvert.SerializeObject 的字符串输出被分配给脚本 block 中的全局变量,我认为这是 XSS 问题所在。

最佳答案

version 4.5.11 中添加了实现此功能的功能

这允许您在输出中添加各种类型的转义。

这是我的 LinqPad 测试:

    var settings = new JsonSerializerSettings();

settings.StringEscapeHandling = StringEscapeHandling.EscapeHtml;

var output = JsonConvert.SerializeObject(new { Property = "<script>alert('o hai');</script>" }, settings);

Debug.Print(output);

输出

{"Property":"\u003cscript\u003ealert(\u0027o hai\u0027);\u003c/script\u003e"}

作为免责声明,这不是修复 xss 的金子弹,但根据您的示例应该可以帮助您减轻它。

关于c# - Json.NET SerializeObject 转义值以防止 XSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com