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

扩展/覆盖现有的ASP.NET控件

发布时间:2020-12-16 09:40:20 所属栏目:asp.Net 来源:网络整理
导读:我有一个包含大量标签,文本框和其他Web控件的项目.其中有数百个. 我现在想要能够覆盖某些属性,以便通过反XSS库运行内容.例如,当我使用数据库中的数据设置标签的text属性时,我想自动运行一个函数来清除任何潜在的恶意代码. 我也尝试使用实现IExtenderProvider
我有一个包含大量标签,文本框和其他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>

(编辑:李大同)

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

    推荐文章
      热点阅读