- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的论坛应用程序,当有人发布任何内容时,我会:
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=javascript:alert('XSS')>
查看此处了解更全面的信息 XSS Cheat Sheet
关于asp.net - 如何使用 AntiXss 库正确清理内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554194/
谁能告诉我这两者的区别?AntiXss.HtmlEncode() 对比 AntiXss.GetSafeHtmlFragment() 最佳答案 HtmlEcode 实际上编码标签: AntiXss.Ht
使用 AntiXss.HtmlEncode 清理我的字段后,有没有办法删除所有 html 元素,因为它们仍然在显示中显示为文字? 最佳答案 不,没有。如果您想删除 HTML 元素,然后对结果进行 Ht
我的公司要求我们的 ASP.NET 代码在发布代码之前通过 Fortify 360 扫描。我们到处都使用 AntiXSS 来清理 HTML 输出。我们还验证输入。不幸的是,他们最近更改了 Fortif
我想在我的网络应用程序中使用 AntiXss 库函数。我有一个 Web 应用程序,其中包含代码隐藏的 Jquery 代码的 asp.net 页面。整个 asp.net 页面通过 Jquery js 页
HttpUtility 类提供编码和解码。但是,当我使用 MS AntiXSS 3.1 库时,我有一套仅用于编码的方法,这是否意味着可以避免解码? 例如 在应用 AntiXSS 之前: lblName
当您可以使用HttpUtility.HtmlEncode简单地对数据进行编码时,我们为什么要使用AntiXss.HtmlEncode? 为什么白名单方法比黑名单方法更好? 另外,在Anti XSS库中
我一直在使用Microsoft's AntiXss Library并想知道其 JavaScriptEncode 方法是否有充分的理由将结果用单引号括起来?这种行为似乎不合常规。 最佳答案 实际上新的3
我有一个简单的论坛应用程序,当有人发布任何内容时,我会: post.Content = Sanitizer.GetSafeHtml(post.Content); 现在,我不确定我是否做错了什么,或者发
我看到网络保护库 (WPL) 带有 2 个不同的选项: 安全运行时引擎 (SRE) 反 XSS 库 第一个看起来很棒,因为不需要代码,它是一个 HTTPModule。第二种需要在代码中手动添加转义逻辑
在我看来,仅使用 html 敏捷包就可以防止 xss(解析然后获取内部文本)。用了hap再用antixss会不会重复? 谢谢,杆。 最佳答案 苹果和橙子。 HTML Agility Pack 是一种解
我想使用新版本的AntiXss来自微软的图书馆。我从 Nuget 包下载了它,但我不确定我应该从这里去哪里。该库没有提供文档,我在网上找到的所有文章都是旧的。由于发生了很多变化,几乎所有我想使用的东西
为什么未使用 Microsoft AntiXSS 清理未关闭的 html 标记? string untrustedHtml = ""; string trustedHtml = AntiXSS.San
这是一个以前被问过的问题,但我没有找到我正在寻找的信息,或者我可能只是错过了这一点,所以请耐心等待。如果我问错了,我总是可以调整我的问题。 例如,如果我有一个 POST 端点,它使用具有 2 个属性(
所以我花了将近 30 分钟寻找 AntiXSS 4.2.1 说明(Microsoft 文档已经过时)并且找不到任何.. 我发现在旧版本中,他们使用,但那已经过时了。 AntiXss.HtmlEncod
Microsoft Web Protection Library (AntiXSS)已达到生命的尽头。该页面指出“在 .NET 4.0 中,框架中包含一个版本的 AntiXSS,可以通过配置启用。在
我不知道我这样做是否正确。 我第一次构建一些东西来防止对页面的攻击。我将从底部开始: 我有属性(property): public string Description {get;set;} 用户可以
我正在使用 AntiXssLibrary 4.0 但它没有转义\x3c。我的错误是什么? 我已根据此处 http://haacked.com/archive/2010/04/06/using-anti
我刚开始使用 AntiXSS (4.3.0),主要是为了使用 @Encoder.JavaScriptEncode如所述here . 我从 Nuget 安装了 AntiXSS,然后添加了 encoder
现在我正在学习网络安全、XSS 等。因为 XSS 基本上是通过注入(inject)一些恶意代码来针对客户端代理(网络浏览器),这些恶意代码由经过身份验证的用户插入时由网络浏览器执行。现在的问题是为什么
我已经阅读了很多关于 XSS 和如何处理的关于 SO 的帖子。通常,共识是白名单而不是黑名单,避免使用正则表达式(太多变体无法处理)。 我正在开发一个 ASP.Net MVC3 应用程序。我需要能够显
我是一名优秀的程序员,十分优秀!