将MVC模型与knockoutjs映射插件绑定会暴露视图源中的所有数据

时间:2015-02-11 17:54:03

标签: javascript jquery asp.net-mvc knockout.js

在我们的项目中,我们使用knockoutJS Mapping插件来映射MVC模型 使用以下

var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));

$(document).ready(function () {
 viewmodelCO = new ViewModelCO(data);
 ko.applyBindings(viewmodelCO, document.getElementById("divID"));
});

一切正常,但我的问题是数据安全性,当我们使用@ Html.Raw时 显示所有数据,如果有人右键单击页面,他们可以看到原始的原始数据。

我们如何防止这种情况,我知道一个选项是重写代码并使用Ajax请求获取数据,但这就像在页面加载后对服务器的另一次调用,这就是我们开始使用MVC的原因模型来映射淘汰对象。有什么建议 ?

1 个答案:

答案 0 :(得分:1)

如果您希望网页操作数据,则必须将数据发送到客户端。这可以通过你当前正在做的方式完成,或者如你所提到的那样,通过第二个AJAX请求。无论哪种方式,您都要将数据发送到客户端(并且通过AJAX执行此操作并不安全 - 通过网络查看数据非常简单。)

如果您关注数据,请确保您只发送执行任务所需的内容,而不是额外的内容。这可能意味着您必须稍微减少数据,但它会带来更多安全性。