【问题标题】:How and when to use Html encode如何以及何时使用 Html 编码
【发布时间】:2010-12-08 14:22:28
【问题描述】:

我最近了解到我不应该将 html 编码的数据存储在数据库中,而是应该对屏幕上为用户显示的数据进行 html 编码。 没什么大不了的,我必须修复我的数据库记录并进行一些代码更改。

但我的问题是,什么时候应该使用 html 编码,什么时候不应该。 例如,在 html 表中,我直接从数据库写入列的内部 HTML。如果没有编码这将是危险的,我明白了。

如何设置文本框的值。它似乎无需对值进行 html 编码即可工作。但我不确定为什么。这是文本框的样子:

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

但是当设置值为:"/&gt;&lt;p style="font-size: 100px;"&gt;testing hack&lt;/p&gt; html 源代码为:

<input type="textbox" value=""/><p style="font-size: 100px;">testing hack</p>

虽然在查看时看起来不错,但 p-tag 无法按“hack”的预期工作。

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

简而言之:我是否应该只对设置为 html 控件的 innerHtml 的内容进行 html 编码,而不是在设置例如文本框的值时?

【问题讨论】:

  • 您是否使用 IE 进行测试?如果您发送到服务器的数据出现在文档中,IE 有时会对其进行转义。
  • @Andreas:您真的查看了源代码 (STRG+U) 还是在开发人员工具的“元素”选项卡中查看了它,有时并不能说明全部情况?
  • 我查看了“元素”选项卡,我不应该猜吗?但无论哪种方式,是否不需要对属性中的内容进行 html 编码?或者我应该使用您建议的“HtmlAttributeEncode”方法,如果是,为什么?真的需要吗?
  • @Andreas:嗯,它在 HTML 源代码中是否也未转义?
  • 啊。现在我明白你在说什么了。在源代码中,该值已自动进行 html 编码,但在 firebug 或 chromes Elements 中,它看起来很奇怪。嗯,所以这意味着不需要对将进入 html 控件属性的内容进行 html 编码?我只需要对设置为控件的 innerHTML 的东西执行此操作。对吗?

标签: html html-encode


【解决方案1】:

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

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

但是,当设置一个 html 控制内部 HTML 时,对值进行 html 编码很重要。

谢谢 Thejh,对不起,我不能投票给你写的任何东西。

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

【讨论】:

    【解决方案2】:

    的情况下

    &lt;input type="textbox" value="xxx"/&gt;

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

    【讨论】:

      【解决方案3】:

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

      1. 将每个\ 替换为\\
      2. 将每个" 替换为\"

      哦,顺便说一句:有时 PHP 会为您执行此操作,请参阅 here

      自 PHP 5.3.0 起,此功能已被弃用。强烈建议不要依赖此功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-24
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        相关资源
        最近更新 更多