不幸的是,这些都不解释eBay这样的站点如何能够允许这样一大堆潜在的恶意HTML标签,例如< link>< script>< object>和CSS样式和HTML属性(如background:url()等),好像它们允许用户在项目描述中提交几乎任何东西.我在项目描述中看到了一些最精致的HTML,Javascript和Flash模板.
什么是eBay做不同的?是否有其他技术或层次,我错过了,这允许他们阻止XSS攻击,同时还允许几乎任何东西被包括在用户的项目描述?
对此的任何想法或洞察力将不胜感激!
解决方法
这不是火箭科学.他们识别漏洞的情况,并且可能通过前端的正则表达式和Javascript编码,以及大量的后端验证,以确保数据在插入之前不会受到影响.我们应该做的一切都是一样的,除了对于Ebay来说,我们大多数人都在做的更加成熟,而FAR更大.
如果像我以前一直工作的银行一样,他们有一个PAS团队致力于在prod中找到小错误,与工程师打开门票,并按优先级顺序进行.在开发人员,测试人员,质量管理和PAS之间,没有任何理由应该出现漏洞,但如果应该发生这种情况,应该快速反应.
如果您计划走这条路线,您应该考虑采取“逐步增强”的方式来应对这一挑战.最初通过阻止javascript平面开始.然后,通过您认为安全的方法来增强允许 – 只允许您继续保持安全.继续这个过程允许越来越多,同时在测试或生产中抓住边缘案例.渐渐地,您将从允许允许阻止什么不是的迁移.虽然这不应该是一个头脑,即使是尖端的公司也错过了生命周期管理和改进的基本概念.
话虽如此,当尝试清理输入时,最好结合前端和后端验证方法.前端为客户提供更直观的快速反馈,但与任何客户端语言一样,沙捞越用户可以克服.后端验证是您的防火墙,确保任何通过前端滑过的内容都会被正确处理.你的数据库是你的生命线,所以保护它不惜一切代价!
除非你有一个军队和巨大的预算,否则试图为每一个边缘案例编写一个像CMS这样广泛的内容,这样一来,几乎总是能够使得近乎疯狂的输入成为一场失败的金融风暴.