除非需要,否则停止制作文本 HTML
Stop text being made HTML unless needed
我可以让用户 post 将一些文本添加到消息提要中。他们可以随心所欲地输入内容。
后端服务器检测到有link和其他link可用元素(比如标记其他人),然后将这些link保存到数据库中。
当向用户提供完整的消息列表时,他们会看到用户已 post 编辑的内容,任何本应是 link 的内容都会变成 link
例如有人输入 www.foobar.com 所以 post 将显示 <a href='www.foobar.com'>www.footbar.com</a>
这很好用,但是如果有人自己输入 HTML 会怎么样。首先,它会弄乱格式,其次,它允许用户 post 自己的 HTML,这很明显很危险。
我需要一种不将 API 返回的文本转换为 HTML 的方法,除非它是我想要的 HTML。但是我不想阻止试图 post HTML 的人,只是阻止它变成 HTML
Twitter 做得对。如果我post把这个发到推特上
<a href='www.foobar.com'>www.footbar.com</a>
它将准确显示您在那里看到的内容,但 www.foobar.com 将突出显示并可点击。
尽管可能不相关,但我使用的是 ASP.NET Web API 后端和 Knockout.JS 前端
更新
我正在使用以下代码来显示文本(剔除 JS observables)
<div data-bind="foreach: allMessages">
<span data-bind="html: theText"></span>
您的后端代码应对传入的数据进行编码。这会将 html 标签更改为基于文本的标签。
例如 <div>test</div>
更改为 %3Cdiv%3Etest%3C/div%3E
。这将防止您不想要的数据进入您的数据库。
我可以让用户 post 将一些文本添加到消息提要中。他们可以随心所欲地输入内容。
后端服务器检测到有link和其他link可用元素(比如标记其他人),然后将这些link保存到数据库中。
当向用户提供完整的消息列表时,他们会看到用户已 post 编辑的内容,任何本应是 link 的内容都会变成 link
例如有人输入 www.foobar.com 所以 post 将显示 <a href='www.foobar.com'>www.footbar.com</a>
这很好用,但是如果有人自己输入 HTML 会怎么样。首先,它会弄乱格式,其次,它允许用户 post 自己的 HTML,这很明显很危险。
我需要一种不将 API 返回的文本转换为 HTML 的方法,除非它是我想要的 HTML。但是我不想阻止试图 post HTML 的人,只是阻止它变成 HTML
Twitter 做得对。如果我post把这个发到推特上
<a href='www.foobar.com'>www.footbar.com</a>
它将准确显示您在那里看到的内容,但 www.foobar.com 将突出显示并可点击。
尽管可能不相关,但我使用的是 ASP.NET Web API 后端和 Knockout.JS 前端
更新
我正在使用以下代码来显示文本(剔除 JS observables)
<div data-bind="foreach: allMessages">
<span data-bind="html: theText"></span>
您的后端代码应对传入的数据进行编码。这会将 html 标签更改为基于文本的标签。
例如 <div>test</div>
更改为 %3Cdiv%3Etest%3C/div%3E
。这将防止您不想要的数据进入您的数据库。