覆盖c#中的HttpContext.Current.Request.Url属性以返回编码的URL

问题描述 投票:2回答:1

在我的一个应用程序中,我在HttpContext.Current.Request.Url代码中使用aspx来获取当前页面url。由于页面url正在java脚本中使用,因此很有可能在url中传递恶意脚本以使JS函数中断。

一种选择是我们可以使用编码url

HttpUtility.HtmlEncode(HttpContext.Current.Request.Url)

但这段代码是用户控件(.ascx file)的一部分,我必须在所有那些用户控件中更改它。

那么我有什么方法可以覆盖它

HttpContext.Current.Request.Url

属性,以便它将返回编码的url?所以我可以使用一些处理程序来处理应用程序中的所有url属性?

谢谢你的帮助。

c# override handler
1个回答
1
投票

您无法覆盖HttpUtility.HtmlEncode,因为该方法是静态方法。

但我认为你可以尝试使用extension method做你的期望。

public static class UriExtension {
    public static string HtmlEncode(this Uri uri){
        HttpUtility.HtmlEncode(uri);
         // do the logic...

    }
}

你可以调用这个方法

HttpContext.Current.Request.Url.HtmlEncode()
© www.soinside.com 2019 - 2024. All rights reserved.