2011-06-17 61 views
30

我在考慮將Play用於大型項目,那麼,是否有任何經過戰鬥考驗的OWASP Top 10 Play框架?您在Play框架中是否存在任何安全問題?playframework owasp top 10

回答

41

在OWASP十大用(一些信息here):

  • A1:注射

    使用JPA和默認

  • A2逃逸字符串:跨站腳本( XSS)

    自版本1.0.1起,Play的模板引擎會自動轉義字符串

  • A3:破壞的身份驗證和會話管理

    播放是無狀態的,沒有涉及任何會話。 Cookie使用密碼保護。通過哈希數據庫(密碼)上安全地存儲數據依賴於用戶,而不是框架

  • A4:不安全的直接對象引用

    同樣,這取決於開發者驗證訪問資源允許的,沒有那麼多的框架

  • A5:跨站請求僞造(CSRF)

    POST請求允許真實性標記,以防止這一點。當然,這使用GET/POST取決於開發商正確

  • A6:安全配置錯誤

    默認的錯誤報告過程似乎對生產(不具有堆棧跟蹤泄漏)的安全。唯一擔心的是在路線的「一網打盡」條目,但這應該在生產模式中註釋掉

  • A7:不安全的加密存儲

    開發者有責任對數據庫中的敏感信息進行加密

  • A8:未能限制URL訪問

    開發人員必須實施安全限制(通過@Before,就像本教程中所述)來禁止訪問禁止頁面。

  • A9:沒有足夠的傳輸層保護

    播放支持SSL

  • A10:未經驗證的重定向和轉發

    播放重定向是通過302,而不是硬編碼字符串,應防止這一點。

TL; DR:在框架可以完成所有工作的部分,Play做到了。在開發人員需要完成所有工作的部分,開發人員需要完成所有工作。每個遊戲需要50%的部分,遊戲提供50%。

讓我們這樣說吧:沒有理由認爲你應該比其他任何Java框架安全。在很多情況下,你可以認爲它更安全。隨着Play對開發人員,無狀態和REST框架的使用變得容易,您可以減少混亂的機會。

+3

關於A1:JPA僅適用於Java。 Anorm是否使用'PreparedStatement'來防止SQL注入呢? – Jonas 2011-06-17 10:10:54

+1

我對無狀態框架沒有任何經驗,因爲這個問題:怎麼玩!處理會話通常會做的事情? – Rekin 2011-06-17 10:14:25

+1

好吧,我想答案是:http://zef.me/883/the-share-nothing-architecture – Rekin 2011-06-17 10:19:01

5

關於A3,你需要小心。 Play有兩種類型的會話變量。一個是session()其中數字簽名,另一個是flash()這是不是簽名。 都存儲在Cookie 客戶端,如果您決定在那裏存儲敏感數據,可能會引發隱私問題。

另外就A7(加密技術)而言,請注意Play提供了一個方便的Crypto庫,但其加密使用ECB模式,該模式再次打開whole new group of potential issues