【发布时间】:2010-12-08 14:22:28
【问题描述】:
我最近了解到我不应该将 html 编码的数据存储在数据库中,而是应该对屏幕上为用户显示的数据进行 html 编码。 没什么大不了的,我必须修复我的数据库记录并进行一些代码更改。
但我的问题是,什么时候应该使用 html 编码,什么时候不应该。 例如,在 html 表中,我直接从数据库写入列的内部 HTML。如果没有编码这将是危险的,我明白了。
如何设置文本框的值。它似乎无需对值进行 html 编码即可工作。但我不确定为什么。这是文本框的样子:
<input type="textbox" value="xxx"/>
但是当设置值为:"/><p style="font-size: 100px;">testing hack</p>
html 源代码为:
<input type="textbox" value=""/><p style="font-size: 100px;">testing hack</p>
虽然在查看时看起来不错,但 p-tag 无法按“hack”的预期工作。
有没有人得到我想要达到的目标 :) ? 如果我尝试对我设置为文本框值的内容进行 html 编码,结果将显示“<”等等,这不是我想要的。
简而言之:我是否应该只对设置为 html 控件的 innerHtml 的内容进行 html 编码,而不是在设置例如文本框的值时?
【问题讨论】:
-
您是否使用 IE 进行测试?如果您发送到服务器的数据出现在文档中,IE 有时会对其进行转义。
-
@Andreas:您真的查看了源代码 (STRG+U) 还是在开发人员工具的“元素”选项卡中查看了它,有时并不能说明全部情况?
-
我查看了“元素”选项卡,我不应该猜吗?但无论哪种方式,是否不需要对属性中的内容进行 html 编码?或者我应该使用您建议的“HtmlAttributeEncode”方法,如果是,为什么?真的需要吗?
-
@Andreas:嗯,它在 HTML 源代码中是否也未转义?
-
啊。现在我明白你在说什么了。在源代码中,该值已自动进行 html 编码,但在 firebug 或 chromes Elements 中,它看起来很奇怪。嗯,所以这意味着不需要对将进入 html 控件属性的内容进行 html 编码?我只需要对设置为控件的 innerHTML 的东西执行此操作。对吗?
标签: html html-encode