词条 | 跨目录攻击 |
释义 | 如果我们在应用程序中使用了客户端存储,并且无法控制服务器上的某些目录,那么就有可能受到跨目录攻击。根据采取的客户端存储方式不同,即使没有明确指定与其他应用程序共享数据,也有可能存在跨目录攻击的危险。最终原因是由于开发人员没有正确地限制能够访问存储系统的网页路径。通常,跨目录攻击的受害者多是那些社交网站,或者是全球性的Web服务器。因为在同一Web服务器上可能为不同的用户或部门分配不同的目录。例如,每个MySpace用户都有一个个人的网络空间,即http://www.myspace.com/USERNAME。本书作者的母校--佐治亚理工学院,也为每个新生分配了一个网络空间http://prism.gatech. edu/~USERNAME。此时,如果使用cookie或者DOM存储,就可能产生跨目录攻击。以sessionStorage对象为例,该对象并没有起限制作用的Path属性。域中的每个页面都可以访问相同的会话存储空间。例如http:// prism.gatech.edu/~acidus可以窃取http://prism.gatech.edu/ ~bsullivan中存储的所有数据。同样,globalStorage对象也缺少对路径的限制,因此也完全可能受到跨目录攻击。在cookie中的默认情况下,Path属性只允许域中的页面之间共享数据。 避免跨目录攻击的最简单方式就是选择一种恰当的存储方法。避免在如上情况下使用DOM存储,因为在跨目录攻击下,我们无法保证DOM存储对象的安全。对于使用cookie的应用程序,应该将它们隔离到单独的目录中,并且必须能够控制该目录下所有子目录的访问权限。然后,使用cookie的Path属性限制只能访问这些目录。而是否选择Flash LSO则需要灵活对待,因为只有将该LSO与其他Flash对象共享,并且将该LSO保存到与Web根目录相邻的目录下时,才有可能受到攻击。假设在同一主机上有两个Flash对象分别位于/Internal/Tools/IssueTracker.swf和/Internal/Tools/HR/TimeSheets/Reporter.swf下,并且二者之间共享数据。同域名一样,开发人员应该尽可能指定最具体的目录名,来限制对共享数据的访问。在本例中,Flash对象应该在使用getLocal()创建LSO对象时指定目录名为/Internal/Tooles/,因为这是两个Flash对象共有的、最具体的目录名。同我们为了防范跨域攻击,而将不同域中的程序隔离到一个单独域中一样,开发人员也可以将共享LSO的Flash对象隔离到单独的目录中。在我们的例子中,IssueTracker.swf和Report.swf应该被移到一个单独目录中,例如/Internal/Tools/HR-Special/。此外,该目录路径还应该传递给Flash的getLocal()方法,以便两者之间能够共享LSO。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。