跨目錄攻擊

避免跨目錄攻擊的最簡單方式就是選擇一種恰當的存儲方法。避免在如上情況下使用DOM存儲,因為在跨目錄攻擊下,我們無法保證DOM存儲對象的安全。對於使用cookie的應用程式,應該將它們隔離到單獨的目錄中,並且必須能夠控制該目錄下所有子目錄的訪問許可權。然後,使用cookie的Path屬性限制只能訪問這些目錄。而是否選擇Flash LSO則需要靈活對待,因為只有將該LSO與其他Flash對象共享,並且將該LSO保存到與Web根目錄相鄰的目錄下時,才有可能受到攻擊。

如果我們在應用程式中使用了客戶端存儲,並且無法控制伺服器上的某些目錄,那么就有可能受到跨目錄攻擊。根據採取的客戶端存儲方式不同,即使沒有明確指定與其他應用程式共享數據,也有可能存在跨目錄攻擊的危險。最終原因是由於開發人員沒有正確地限制能夠訪問存儲系統的網頁路徑。通常,跨目錄攻擊的受害者多是那些社交網站,或者是全球性的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。

相關詞條

熱門詞條

聯絡我們