gpt4 book ai didi

c# - Microsoft.Security.Application.Encoder.UrlPathEncode 有什么作用?

转载 作者:行者123 更新时间:2023-11-30 16:57:24 26 4
gpt4 key购买 nike

我找到了 a brilliant example使用 HTMLAgilityPack 的 HTML sanitizer 。在代码中,使用了 Microsoft.Security.Application.Encoder 类:

// AntiXss
a.Value = Microsoft.Security.Application.Encoder.UrlPathEncode(a.Value);

我找不到包含此类的程序集,我宁愿在我的项目中没有其他依赖项,并且 sanitizer 在没有这一行的情况下也能工作。但是,删除此调用可能会在代码中留下安全漏洞。

为了决定赞成或反对使用这个程序集,我想知道:这个方法到底做了什么?

最佳答案

你可以看看source code

来自方法的源代码

/// <summary>
/// URL-encodes the path section of a URL string and returns the encoded string.
/// </summary>
/// <param name="input">The text to URL path encode</param>
/// <returns>The URL path encoded text.</returns>
[System.Diagnostics.CodeAnalysis.SuppressMessage(
"Microsoft.Design",
"CA1055:UriReturnValuesShouldNotBeStrings",
Justification = "This does not return a full URL so the return type can be a string.")]
public static string UrlPathEncode(string input)
{
if (string.IsNullOrEmpty(input))
{
return input;
}

// DevDiv #211105: We should make the UrlPathEncode method encode only the path portion of URLs.
string schemeAndAuthority;
string path;
string queryAndFragment;
bool validUrl = UriUtil.TrySplitUriForPathEncode(input, out schemeAndAuthority, out path, out queryAndFragment);

if (!validUrl)
{
// treat as a relative URL, so we might still need to chop off the query / fragment components
schemeAndAuthority = null;
UriUtil.ExtractQueryAndFragment(input, out path, out queryAndFragment);
}

return schemeAndAuthority + HtmlParameterEncoder.UrlPathEncode(path, Encoding.UTF8) + queryAndFragment;
}

您将不得不深入挖掘以了解编码 uri 的所有事件部分。通常我会建议查看单元测试以查看组件的预期内容,但乍一看 Encoder 类没有测试:(

关于c# - Microsoft.Security.Application.Encoder.UrlPathEncode 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605523/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com