深入解析Web应用安全与XSS防御策略
跨站脚本(XSS)与Web应用安全防护
Bryan Sullivan在此做客BlueHat博客,暂时离开我通常所在的SDL博客。很高兴看到BlueHat向Web应用安全社区示好。令我兴奋的是,BlueHat延续邀请最优秀Web应用安全专家的传统,将整个上午专门用于讨论第七层问题,这充分体现了该领域对我们的重要性。
你可能会说:“邀请演讲者到BlueHat毫无意义!你们为自己的Web应用做了什么?行动胜于雄辩!”我完全同意。我们的MSN/Live网站安全策略由SDL覆盖,让我们来看看SDL方案中的一些要素。
透露Microsoft内部秘密并不算多:我们在线资产的首要安全问题是跨站脚本(XSS)。XSS是我们最常报告的漏洞,远超其他类型。这很合理:Web开发人员很容易无意中在代码中写入XSS漏洞,而导致XSS的应用行为(将用户输入返回给该用户,或存储并显示给其他用户)也非常常见。那么,SDL对XSS有何规定?
在最新内部版SDL(4.0)中,至少有五个独立要求涉及XSS问题。SDL涵盖适当的实施实践(如验证用户输入和编码输出),并指定了验证过程中可用于发现漏网XSS漏洞的工具。据最新统计,公司内不同团队开发了至少九种此类工具。其中大多数仅内部使用,但有些(如ACE团队开发的优秀Anti-XSS输出编码库)对所有人开放。
既然有五个SDL流程要求、九种工具以及无数记录该问题的书籍和网站,为什么我们仍有XSS?为什么我们没有像消灭天花一样根除它,将其仅保存在99号楼某台机器上,作为智力好奇或提醒过去不够开明的纪念?原因在于要求、工具、书籍或网站都不完美。没有一种工具(内部或公开)特别擅长检测某些罕见类型的XSS,如0型或基于DOM的XSS。尽管大家意图良好,但流程有时未能100%正确遵循。但比“Microsoft网站是否完全安全?”更好的问题是“Microsoft网站是否变得更安全?”,答案是肯定的。
Web站点中的XSS与Windows中的缓冲区溢出有直接类比。我们仍未完全消除Windows中的缓冲区溢出,且检测和消除缓冲区溢出的SDL要求和工具远多于XSS。但Windows现在比SDL之前安全得多,我们的Web应用也是如此。
我很想讨论XSS之外的其他Web应用安全问题,如跨站请求伪造(CSRF)和JSON劫持。更想讨论我们在SDL中开发哪些工具和流程来解决这些问题。但Katie不让我在BlueHat博客上占用更多空间——我必须在SDL博客上继续。请持续关注那边。
-Bryan
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码


浙公网安备 33010602011771号