为什么Javascript代码在ko.observableArray()中执行;

问题描述 投票:0回答:1

我有一个问题,我正在使用knockout.js从谷歌驱动器和页面列表中读取文件。我使用observable数组来存储文件数据文件数据包括文件的各种参数,如名称,大小和链接等。

我正在创建JSON对象并推送到数组。但这是主要问题。如果文件名包含类似的javascript代码

<script>alert('i am executing');</script>

然后它执行并显示警报消息

这里有一些细节

var file = {
  Name: <script>alert('message')</script>,
  URL: item.alternateLink,
  ServerRelativeUrl: item.alternateLink,
  modified: item.modifiedDate,
  icon: item.iconLink
};

docs.push(file);

有没有人面临同样的问题或有一个解决方案,以防止不需要的脚本执行

javascript knockout.js
1个回答
1
投票

由于您使用html绑定属性Name,因此属性中的任何javascript代码都将由浏览器执行。为了防止这种情况,您应该使用text而不是html来绑定数据。这将编码任何HTML防止脚本注入。

EG

<p class="summary">
   <a target="_blank" data-bind="text:Name, attr:{href:URL}"></a>
</p>
© www.soinside.com 2019 - 2024. All rights reserved.