扩展/覆盖现有的ASP.NET控件
我有一个包含大量标签,文本框和其他Web控件的项目.其中有数百个.
我现在想要能够覆盖某些属性,以便通过反XSS库运行内容.例如,当我使用数据库中的数据设置标签的text属性时,我想自动运行一个函数来清除任何潜在的恶意代码. 我也尝试使用实现IExtenderProvider的类来覆盖text属性,但我无法帮助它. 如果我从头开始构建这个,我可能选择创建一个继承系统标签类的新标签类.由于项目的规模,我宁愿不这样做. 有什么想法吗? 解决方法
首先,我要注意,避免XSS漏洞的正确方法是在将用户输入嵌入页面之前对其进行正确编码.例如,如果要将纯文本字符串分配给
Label的Text属性,则需要对该值进行编码,因为Text属性逐字呈现为HTML:
label.Text = HttpUtility.HtmlEncode(user.Name) (注意:“纯文本”是指像<和&这些字符没有任何特殊含义的文字.) 其次,作为额外的纵深防御措施,您应该在收集用户输入时对其进行验证.但输入验证并不否定正确编码用户输入的必要性(因为某些东西可能会漏掉).始终编??码用户输入! 好的,我们假设你会在时间和测试允许的情况下这样做,但你现在需要快速修复.您可以创建control adapters,以更改特定类型的控件的呈现方式.这是一个为每个单词< asp:Label>添加一些星号的示例.在您的申请中: Imports System.Web.UI Imports System.Web.UI.WebControls.Adapters Public Class LabelControlAdapter Inherits WebControlAdapter Protected Overrides Sub RenderContents(writer As HtmlTextWriter) Dim label As Label = Me.Control label.Text = "***" + label.Text + "***" ' TODO: Use your anti-XSS library MyBase.RenderContents(writer) End Sub End Class 您可以为其他类型的控件创建其他控件适配器,或者修改LabelControlAdapter以嗅探Me.Control的类型并执行不同的操作. 您还需要将.browser文件添加到站点的App_Browsers文件夹中,该文件夹列出了您正在调整的每种控件类型: <browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.WebControls.Label" adapterType="TempVBWebApp.LabelControlAdapter,TempVBWebApp" /> </controlAdapters> </browser> </browsers> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – “继承”ASP.NET MVC网站从一个常见的模板应
- asp.net – 为什么HttpUtility.UrlPathEncode标记为“不使用
- 在asp.net页面之间传递数据
- asp.net-mvc – 在REST Web API调用中返回复杂对象
- asp.net-mvc – MVC1和MVC2之间的区别
- .NET高级调试系列-Windbg调试入门篇
- asp.net-2.0 – 不使用SSL的安全登录凭证
- 如何在asp.net 3.5中使用NHibernate
- asp.net-mvc-3 – RoleProvider不能与服务器上的自定义IIde
- asp.net-web-api – 设计REST ful ODATA API,结果集为空时如