我正在考虑允许我们的在线系统用户通过简单地将它们包含在用户的基础上来控制他们自己的.css
文件。
避免所述文件中任何潜在的XSS攻击的最佳方法是什么?
是否有可能完全保护自己?
我们可以为他们托管文件,显然我们自己检查一下,但我们的用户也可以更方便地更新它们。
答案 0 :(得分:2)
允许CSS的问题在于可以发生许多聪明的攻击 。 CSS确实非常危险。
某些CSS表达式允许执行任意JavaScript。黑名单很难防止这种情况,所以我建议将白名单列入白名单。
此外,有人可能会创建一个CSS文件来更改页面以模拟另一个网站,另一个页面,或者它可能巧妙地定位页面上的其他元素。想象一下,如果有人能够将自己的登录表单放在真实的登录表单之上。然后他们可以拦截登录请求。根据您的网站设置方式,这可能会也可能不会;但要预先警告!有些人知道这是clickjacking
。
答案 1 :(得分:2)
首先,正如其他人所说,谨慎行事。除此之外,尝试并列出您在文件中期望的有效输入。看看您是否可以找到所选框架的任何库(您还没有提到它是什么),它可以验证字符串是否符合CSS结构。
您可能要考虑的另一件事是参数化某些CSS属性并允许用户配置它们(即颜色,字体等)。这样可以显着降低风险,因为它可以随意创建自己的恶意CSS(相反,创建自己的无辜CSS!)
关于你原来的问题“是否可以完全保护自己?”,这很容易 - 不!