gpt4 book ai didi

asp.net-mvc - 如何编码用于显示和回发的 javascript 字符串?

转载 作者:行者123 更新时间:2023-12-02 00:04:50 24 4
gpt4 key购买 nike

我有一个 MVC 应用程序,它正在客户端呈现以下 javascript:

var rawData = [{"ID":5317,"Code":"12345","Description":"sometext \u003c/= 100"}];

JSON 数据是使用 JavaScriptSerializer 序列化对象的结果然后通过 Html.Raw() 帮助程序运行结果。

此数据然后用于加载挖空 View 模型并在悬停时显示弹出窗口。在弹出窗口中,仅显示“描述”属性的“sometext”部分,因为在设置 rawData 变量时字符串被转换为未编码版本(即\u003c 被转换为 <)。

此外,此数据最终会在保存数据时被发送回服务器,并且 ASP.NET 验证会启动并在检测到“

我暂时解决了这个问题,方法是向我的 Knockout View 模型添加一个计算属性,如下所示:

self.DescriptionEncoded = ko.observable('');
self.Description = ko.computed({
read: function() {
return self.DescriptionEncoded ();
},
write: function(value) {
self.DescriptionEncoded($('<div/>').text(value).html());
}
});

通过这种方式,我可以从我的弹出窗口访问转义属性,并且当我序列化我的 View 模型(使用 .toJSON())时,未转义的值不会发送回服务器。

有没有一种更全局的方法来处理这个问题,而不是为每个对象创建计算属性,这些对象可能有一些文本似乎是一个错误的请求,同时又不影响安全性?我已经考虑过序列化例程的重载/帮助器,它会接受一个属性列表来应用查找/替换我认为这将必须以类似于我已经做的方式逐个处理完毕。至于将数据发送回服务器,我可以覆盖我的 View 模型上的 toJSON() 方法并删除不需要发送回的属性,但这对我的弹出窗口没有帮助。

想法?

最佳答案

您可以使用 Ajax.JavaScriptStringEncode 进行编码.您还可以获取 AntiXSS 库并将其用于编码。

希望我能很好地理解您的问题。

关于asp.net-mvc - 如何编码用于显示和回发的 javascript 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039539/

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