我正在构建一个网络邮件,它必须能够显示html电子邮件。但是,如何防止xss和相似的攻击,同时又不放松html格式?
在gmail中,当我收到一些来自twitter的电子邮件时,它们的格式很好。我想要的是这样的东西。
Html5支持iframes的sandbox
属性,这似乎解决了我的问题,但它不受支持。我需要一个在现代浏览器中工作的解决方案,但在旧浏览器中不会变得不安全。在旧浏览器中完全不工作是可以接受的,但它不能变得不安全。它应该在IE9和更高版本中工作。
我有什么选择?
发布于 2015-03-01 16:49:59
Google每年花费大量的金钱在bug奖励上,以确保Gmail不会受到XSS的影响。这项工作的一部分已经产生了Google-Caja,这是一个开源项目,它将HTML过滤到一个“安全”子集。
像Caja这样的HTML过滤器沙箱依赖于使用复杂解析技术的“旧”解决方案,以及成千上万的正则表达式来过滤XSS有效负载。一个“新的”解决方案是内容-安全策略,它允许开发人员构建完全不受反射性和持久性XSS影响的HTML页面,这是一个比Caja能够提供的更强大的保护。CSP将是最好的解决方案,但它“太新”,IE和旧浏览器不支持它。
如果我需要监禁HTML,我将使用Caja和一个严格的CSP规则集。
发布于 2015-03-01 19:19:49
你也可以这样做:
对于嵌入在邮件中的每个html页面,您可以将img下载到服务器上以供显示,重写指向缓存的每个链接,删除驻留在该页面上的javascript。虽然这可能不是一个好主意,但是加载/金钱/存储/带宽是明智的。这对于发送给您的邮件非常有效,但是有某种回调/电话主页元素。
https://security.stackexchange.com/questions/82766
复制相似问题