加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 我需要html编码标题属性(工具提示)吗?

发布时间:2020-12-16 09:18:04 所属栏目:asp.Net 来源:网络整理
导读:在我的标记中,我使用 HTML标题属性,我通过各种ASP.NET控件的工具提示属性设置,如asp:Label.这些标题的内容来自数据库,我使用数据绑定语法,例如: asp:Label ID="PersonLabel" runat="server" Text='%# HttpUtility.HtmlEncode(Eval("PersonShortName")) %'
在我的标记中,我使用 HTML标题属性,我通过各种ASP.NET控件的工具提示属性设置,如asp:Label.这些标题的内容来自数据库,我使用数据绑定语法,例如:

<asp:Label ID="PersonLabel" runat="server" 
    Text='<%# HttpUtility.HtmlEncode(Eval("PersonShortName")) %>'
    ToolTip='<%# HttpUtility.HtmlEncode(Eval("PersonFullName")) %>' />

现在,工具提示似乎在Windows和我测试的浏览器中显示为纯文本.所以HTML编码不是我真正想要的,我倾向于删除编码.

如果数据库字段可能包含脚本标记,这会以任何方式危险吗?我的问题基本上是:是否始终保证HTML标题属性显示为纯文本?它们是否总是显示为工具提示,或者某些浏览器(或操作系统)是否可能以其他方式显示它们并允许并在标题属性中呈现HTML内容?

编辑:

看一些答案,似乎我没有很好地说出我的问题,所以这里有一些补充:

如果我在我的数据库中的“PM”的PersonShortName上面的代码片段中,并且作为PersonFullName,其中包含非ASCII字符的名称,如“PeterMüller”中的Umlauts,则浏览器显示在工具提示中Peter M&#252; ller当我在代码示例中应用HttpUtility.HtmlEncode时 – 这很难看.

我还测试了一个简单的HTML片段,如:

<span title="<script>alert('Evil script')</script>" >Hello</span>

title属性中的脚本未在启用了Javascript的浏览器中运行(使用Firefox测试),而是在工具提示中显示为纯文本.因此我猜测标题属性总是呈现为纯文本.

但正如Felipe Alsacreations在下面回答的那样,存在“丰富的工具提示插件”,它可能将标题属性呈现为HTML.所以在这种情况下编码是一件好事.但我怎么知道呢?

也许HttpUtility.HtmlEncode不是正确的解决方案,我必须只过滤HTML标签但不编码简单的特殊字符,以确保正确显示纯文本并同时保护“丰富的HTML工具提示”.但它看起来像是一项昂贵的工作 – 仅用于简单的工具提示.

解决方法

始终清理输出到浏览器.

如果将“>< script> blabla< / script>”这样的值作为字段的值插入,则用户可以基本上接管整个网站.在验证和更正代码时可能会弄得一团糟,但脚本仍将运行.

所以回答你的问题:不,如果用户知道他/她在做什么,就不能保证HTML标题属性显示为纯文本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读