如何以及何时使用Html编码

时间:2010-12-08 14:22:28

标签: html html-encode

我最近了解到我不应该将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不能按照“黑客”的意图运作。

有人得到我想要的目标:)? 如果我尝试html编码我设置为文本框值的内容,结果将显示“&amp; lt”等等,这不是我想要的。

所以简而言之:我应该只对html控件的innerHtml中设置的内容进行html编码,而不是设置文本框的值吗?

3 个答案:

答案 0 :(得分:3)

答案来自于我和我在对问题的评论中的讨论。我不确定要回答什么,所以我决定回答我自己的问题。我希望没问题。

似乎在设置属性的值(如文本框的“值”)时,.NET会自动对html进行编码,因此无需自己执行此操作。

当设置html控制内部HTML时,重要的是你要对值进行html编码。

谢谢你,对不起,我无法对你写的任何内容进行投票。

编辑:我不能将此标记为另外2天的答案。

答案 1 :(得分:1)

的情况

<input type="textbox" value="xxx"/>

'xxx'是一个属性,您应该使用不同的编码。在ASP.NET中,例如HtmlAttributeEncode

答案 2 :(得分:1)

对于HTML属性,请对反斜杠和双引号进行编码。

  1. 将每个\替换为\\
  2. 将每个"替换为\"
  3. 哦,顺便说一下:有时PHP会为你做这件事,请参阅here

      

    自PHP 5.3.0起,此功能已被弃用。非常不鼓励依赖此功能。