asp.net – 我需要html编码标题属性(工具提示)吗?
在我的标记中,我使用
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ü 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标题属性显示为纯文本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp-classic – 在Web浏览器中捕获标签关闭事件?
- asp.net – 自上一步以来,进程或线程已更改
- asp.net-mvc – 使用CSVHelper将流输出到浏览器
- asp.net-mvc – 在同一页面显示搜索表单及其结果的最佳方法
- asp.net – Panel visible = true没有任何效果
- asp.net – 如何从相同的解决方案的MVC项目调试Web API项目
- asp.net-mvc – 如何告诉Ninject绑定到它没有引用的实现
- 具有前缀的控件的Asp.Net MVC2 Clientside验证问题
- asp.net-mvc – ASP.NET MVC,自动完成文本框,缓存?
- 在ASP.NET MVC视图页面中放置jQuery代码的位置?
- asp.net-mvc – 在ASP.NET MVC 2中的RadioButton
- asp.net – 捆绑css工作但字体没有加载
- asp.net-mvc – 在TDD和DDD中,你如何处理假货中的
- asp.net-mvc – Visual Studio无法解析模型,但加
- asp.net-mvc – 配置Magical Unicorn Mvc错误工具
- asp.net-core – ASP.NET核心DisplayAttribute本
- ..net学习群
- ASP.NET MVC 4自定义HTML Helpers文件夹位置
- .net – 使用COM注册托管程序集而不使用GAC
- asp.net mvc强类型视图模型与multiselect