问题标签 [html-sanitizing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
54832 浏览

c# - 如何使用 C# 清理 html 页面上的输入?

是否有一个库或可接受的方法来清理 html 页面的输入?

在这种情况下,我有一个只有姓名、电话号码和电子邮件地址的表格。

代码必须是 C#。

例如:

"<script src='bobs.js'>John Doe</script>"应该成为"John Doe"

0 投票
12 回答
56263 浏览

security - 使用用户输入的 URL 处理安全和避免 XSS 的最佳方法

我们有一个高度安全的应用程序,我们希望允许用户输入其他用户可以看到的 URL。

这引入了 XSS 黑客攻击的高风险 - 用户可能会输入另一个用户最终执行的 javascript。由于我们持有敏感数据,因此永远不会发生这种情况至关重要。

处理此问题的最佳做法是什么?任何安全白名单或逃逸模式是否足够好?

关于处理重定向的任何建议(例如,在跟随链接之前的警告页面上的“此链接超出我们的站点”消息)

是否存在根本不支持用户输入链接的论点?


澄清:

基本上我们的用户想要输入:

stackoverflow.com

并将其输出给另一个用户:

我真正担心的是他们在 XSS 黑客中使用它。即他们输入:

alert('被黑了!');

所以其他用户得到这个链接:

我的例子只是为了解释风险——我很清楚 javascript 和 URL 是不同的东西,但是通过让他们输入后者,他们可能能够执行前者。

你会惊讶于这个技巧可以破坏多少个网站——HTML 更糟糕。如果他们知道处理链接,他们是否也知道清理<iframe><img>巧妙的 CSS 引用?

我在一个高度安全的环境中工作——一次 XSS 黑客攻击可能会给我们带来非常高的损失。我很高兴我可以生成一个正则表达式(或使用迄今为止最好的建议之一),它可以排除我能想到的所有内容,但这是否足够?

0 投票
10 回答
108933 浏览

javascript - 在客户端清理/重写 HTML

我需要显示通过跨域请求加载的外部资源,并确保只显示“安全”内容。

可以使用 Prototype 的String#stripScripts删除脚本块。但是诸如onclickor之类的处理程序onerror仍然存在。

是否有任何图书馆至少可以

  • 剥离脚本块,
  • 杀死 DOM 处理程序,
  • 删除列入黑名单的标签(例如:embedobject)。

那么是否有任何与 JavaScript 相关的链接和示例?

0 投票
6 回答
24476 浏览

asp.net - .NET 的 HTML 消毒剂

我正在开始一个使用 asp.net mvc 面向公众的项目。我知道那里有大约 10 亿个 php、python 和 ruby​​ html 消毒剂,但是有没有人指出 .net 中有什么好的东西?你对外面的东西有什么经验?我知道 stackoverflow 是一个在 asp.net 中完成的网站,它允许自由格式的 HTML,它使用什么?

0 投票
3 回答
1250 浏览

python - 如何使用 python 使 HTML 对 web 浏览器安全?

如何使用 python 使电子邮件中的 HTML 安全地显示在 Web 浏览器中?

显示时不应遵循任何外部引用。换句话说,所有显示的内容都应该来自电子邮件,而不是来自互联网。

除了垃圾邮件之外,还应尽可能地按照作者的意图显示。

我想避免自己编码。

需要最新浏览器 (firefox) 版本的解决方案也是可以接受的。

0 投票
4 回答
120236 浏览

javascript - Javascript 中的简单 HTML 清理程序

我正在寻找一个用 JavaScript 编写的简单的 HTML sanitizer。它不需要 100% XSS 安全。

我正在我的网站上实现 Markdown 和 WMD Markdown 编辑器(来自 github 的 SO 主分支)。问题是实时预览中显示的 HTML 没有被过滤,就像它在 SO 上一样。我正在寻找一个用 JavaScript 编写的简单/快速的 HTML sanitizer,以便我可以过滤预览窗口的内容。

不需要具有完整 XSS 保护的完整解析器。我没有将输出发送回服务器。在将结果存储在数据库中之前,我将 Markdown 发送到使用适当的、完整的 HTML 清理程序的服务器。

谷歌对我来说绝对没用。我刚刚收到数百篇(通常不正确)关于如何从用户生成的各种服务器端语言的 HTML 中过滤掉 javascript 的文章。

更新

我会更好地解释为什么我需要这个。我的网站有一个与 StackOverflow 上的非常相似的编辑器。有一个文本区域可以输入 MarkDown 语法,它下面有一个预览窗口,显示提交后的样子。

当用户提交内容时,它会以 MarkDown 格式发送到服务器。服务器将其转换为 HTML,然后在其上运行 HTML sanitizer 以清理 HTML。MarkDown 允许任意 HTML,所以我需要清理它。例如,用户键入如下内容:

MarkDown 转换器不会触及它,因为它是 HTML。HTML sanitizer 将删除它,因此脚本元素消失了。

但这不是预览窗口中发生的情况。预览窗口仅将 MarkDown 转换为 HTML,但不会对其进行清理。因此,预览窗口将有一个脚本元素。这意味着预览窗口与服务器上的实际呈现不同。

我想解决这个问题,所以我需要一个快速又脏的 JavaScript HTML sanitizer。一些简单的基本元素/属性黑名单和白名单就可以了。它不需要 XSS 安全,因为 XSS 保护是由服务器端 HTML sanitizer 完成的。

这只是为了确保预览窗口在 99.99% 的时间内与实际渲染相匹配,这对我来说已经足够了。

你能帮我吗?提前致谢!

0 投票
4 回答
8881 浏览

asp.net - 在存储到数据库之前或渲染之前清理 HTML?(ASP.NET 中的反 XSS 库)

我有一个编辑器,允许用户添加存储在数据库中并呈现在网页上的 HTML。由于这是不受信任的输入,我计划使用它Microsoft.Security.Application.AntiXsSS.GetSafeHtmlFragment来清理 HTML。

  • 我应该在保存到数据库之前还是在将不受信任的输入呈现到网页之前进行消毒?
  • 在我的项目中包含 AntiXSS 源代码而不仅仅是 DLL 是否有优势?(也许我可以自定义白名单?)
  • 我应该在哪个类文件中查找 GetSafeHtmlFragment 的实际实现
0 投票
3 回答
1619 浏览

ruby-on-rails - Rails Sanitize:安全 + 允许嵌入

我们正在构建一个用户生成的内容网站,我们希望用户能够在其中嵌入视频、幻灯片共享等内容...任何人都可以推荐一个普遍接受的标签/属性列表以允许在 rails sanitize 中为我们提供相当好的安全性,同时仍然允许大量的可嵌入内容/html格式?

0 投票
5 回答
1471 浏览

python - 移除 AppEngine Python Env 中的 HTML 标签(相当于 Ruby 的 Sanitize)

我正在寻找一个可以帮助我摆脱 HTML 标记但保留文本值的 python 模块。我之前尝试过 BeautifulSoup,但我不知道如何完成这个简单的任务。我尝试搜索可以执行此操作的 Python 模块,但它们似乎都依赖于在 AppEngine 上无法正常工作的其他库。

下面是来自 Ruby 的 sanitize 库的示例代码,这就是我在 Python 中所追求的:

感谢您的建议。

-e

0 投票
1 回答
626 浏览

ruby-on-rails - 使用 simple_format 时清理输入以在视图中显示

我试图找出显示评论的正确方法,以便显示换行符和链接。我知道通常情况下,您应该仅在使用 h() 转义 html 时才显示用户输入。那当然不会显示换行符或链接,所以我找到了 simple_format 和 auto_link 方法。

我现在正在做的是: simple_format(santize(auto_link(comment.text)))

这是执行此操作的正确方法吗?它仍然可以免受 XSS 攻击吗?

谢谢!埃里克