gpt4 book ai didi

asp.net - 如何使用 AntiXss 库正确清理内容?

转载 作者:行者123 更新时间:2023-12-02 10:10:47 25 4
gpt4 key购买 nike

我有一个简单的论坛应用程序,当有人发布任何内容时,我会:

post.Content = Sanitizer.GetSafeHtml(post.Content);

现在,我不确定我是否做错了什么,或者发生了什么,但它不允许几乎没有 html。即使简单<b></b>实在是太多了。所以我猜这个工具完全没用。

现在我的问题:谁能告诉我应该如何清理用户输入,以便他们可以发布一些图像(<img>标签)并使用粗体强调等?

最佳答案

好像很多人都找到 sanitizer 液rather useless 。不用使用 sanitizer ,只需对所有内容进行编码,然后将安全部分解码回来:

private static readonly IEnumerable<string> WhitelistedTags =
new[] { "<b>", "</b>", "<i>", "</i>" };

private static readonly (string Encoded, string Decoded)[] DecodingPairs =
WhitelistedTags
.Select(tag => (Microsoft.Security.Application.Encoder.HtmlEncode(tag), tag))
.ToArray();

public static string Sanitize(string html)
{
// Encode the whole thing
var safeHtml = Microsoft.Security.Application.Encoder.HtmlEncode(html);
var builder = new StringBuilder(safeHtml);

// Decode the safe parts
foreach (var (encodedTag, decodedTag) in DecodingPairs)
{
builder.Replace(encodedTag, decodedTag);
}

return builder.ToString();
}

请注意,安全解码 IMG 标签几乎是不可能的,因为攻击者可以通过非常简单的方法来滥用此标签。示例:

<IMG SRC="javascript:alert('XSS');">

<IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>

查看此处了解更全面的信息 XSS Cheat Sheet

关于asp.net - 如何使用 AntiXss 库正确清理内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554194/

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