除非需要,否则停止制作HTML文本

时间:2015-01-08 13:24:52

标签: javascript jquery html css knockout.js

我可以让用户将一些文字发布到消息Feed中。他们能够输入他们想要的任何东西。

后端服务器检测到有链接和其他可链接元素(如标记其他人),然后将这些链接保存到数据库中。

当用户被提供完整的消息列表时,他们会看到用户发布的内容,并且任何想要成为链接的内容都会变成链接

例如有人输入www.foobar.com,因此帖子会显示<a href='www.foobar.com'>www.footbar.com</a>

这很有效,但是如果有人在自己中键入HTML会怎样。首先它会混乱格式化,其次它允许用户发布他们自己的HTML,这可能是危险的,原因很明显。

我需要一种不将API返回的文本转换为HTML的方法,除非它是我想要的HTML。但是,我不想阻止某人试图发布HTML,只是停止转为HTML

Twitter正确地做到了。如果我发布到twitter

<a href='www.foobar.com'>www.footbar.com</a>

它会告诉我你在那里看到的确切内容,但www.foobar.com将突出显示并可点击。

虽然它可能不相关,但我使用ASP.NET Web API后端和Knockout.JS作为前端

更新

我使用以下代码来显示文本(knockout JS observables)

  <div data-bind="foreach: allMessages">
    <span data-bind="html: theText"></span>

1 个答案:

答案 0 :(得分:1)

您的后端代码应编码进来的数据。这会将html标记更改为基于文本。 示例是<div>test</div>%3Cdiv%3Etest%3C/div%3E的更改。这样可以防止数据进入您不想要的数据库。