我有以下淘汰赛定义:
FunctionVm = function (initialData) {
var self = this;
self.Dto = {
Name: ko.observable(initialData.Dto.Name)
};
};
Html很简单:
<input data-bind="value:Dto.Name" id="Dto_Name" type="text"></input>
我这样叫淘汰赛:
var initialData = ...
var functionVm = new FunctionVm(initialData);
ko.applyBindings(functionVm);
现在,如果initialData = {&#34; Dto&#34;:{&#34; Name&#34;:&#34; Home&#39;}};没关系。
但是如果
initialData = {"Dto":{"Name":"<script>alert(1)</script>"}};
淘汰赛根本没有显示任何内容。
你能帮我吗?
答案 0 :(得分:2)
那是因为</script>
结束标记结束了包含代码的脚本标记,因此由于未终止的字符串文字而导致语法错误。
将标签分成两个字符串:
initialData = {"Dto":{"Name":"<script>alert(1)</scr"+"ipt>"}};
答案 1 :(得分:0)
您可以在将HTML插入“名称”之前通过转义HTML来验证数据吗? PHP和jQuery都具有此任务的功能。不要相信用户输入:)