摘要:的安全比你想象的還要差大會結(jié)束了,發(fā)表了題為的演說。宣稱,根據(jù)可供選擇的類庫來倒騰你自己的棧,這種思想方法導致了系統(tǒng)級的安全問題。對于而言,安全的會話管理只有非常少量的被證明過的最佳實踐。安全頭在應用程序,沒有集中的類庫來居中管理安全頭。
Clojure的web安全比你想象的還要差
ClojureWest大會結(jié)束了,Aaron Bedra發(fā)表了題為 Clojure.web/with-security的演說。如果你用Clojure開發(fā)web應用程序,你必須看這個視頻。現(xiàn)在就看。
這篇博客綜合了Aaron的講話筆記和一些我自己的想法。
有多差?“Clojure web應用程序是我曾經(jīng)見過的、在安全方面做得最差的?!?br> “……像PHP級別……沒有框架級別,安全?!?br> —Aaron Bedra
Aaron宣稱,根據(jù)可供選擇的類庫來倒騰你自己的(web)棧,這種Clojure思想方法導致了系統(tǒng)級的安全問題。我們有碎片,但是沒有把它們組合成一個強健的、可靠的框架。相反,開發(fā)者挑選不同的類庫,不是所有的類庫都提供了完整的覆蓋或健全的安全默認項。
密碼管理password/crypt相關操作的前三名類庫(crypto-password, friend 和 lib-noir)不支持HMAC,不需要逐個更新就可以實現(xiàn)從一個模式遷移(MD5到SHA1到……),通常具備有限的選項。
Aaron推薦的不是要有多個選項可供選擇,而是Clojure社區(qū)致力于一個(他推薦crypto-password),讓friend和lib-noir依賴它。我認為這是明智的想法。
會話管理Clojure web應用程序通常依賴Ring處理會話管理。Ring不能提供持久會話管理(基于數(shù)據(jù)庫,保存/驗證合法的會話cookie)來阻止重放攻擊(replay attack),會話cookie不能默認成http only標識(允許XSS攻擊盜取cookie)。
對于Ring而言,安全的會話管理只有非常少量的、被證明過的最佳實踐。
身份驗證friend類庫就是基于Ring的web應用程序在身份驗證管理上的、事實上的類庫,它基本滿足了。不幸的是,friend不支持更加復雜的身份驗證策略,在基于Ring之外的情況下就表現(xiàn)不好了。
我們不要用你自己的獨立身份驗證類庫來填補這個空白,而應該反饋給friend。這里我被人提醒了Ruby的omniauth。
XSS數(shù)量龐大的Clojure HTML模板類庫提高了持續(xù)防護XSS攻擊的難度(轉(zhuǎn)義HTML標簽,控制標簽被轉(zhuǎn)義或不被轉(zhuǎn)義)。
最終有太多的可供選擇的模板類庫。開發(fā)組應該挑選一個并堅持用下去。在選擇一個模板類庫時,要把XSS控制的支持做為一個考慮因素。
安全頭在Clojure web應用程序,沒有集中的類庫來居中管理安全頭。安全頭可以在Ring里手動設置,但是你不得不知道配置的正確位置。Aaron指出,Ruby的secureheaders gem就是Clojure所需的一個例子。
更新:Dhruv Chandna已經(jīng)為其Ring中間件類庫推出了一個更新,增加了安全頭:ring-secure-headers。做得不錯!隨后我會詳細研究的。
總結(jié)我的結(jié)論:開發(fā)安全性高(參考OWASP Top Ten List of Security Issues和 OWASP Testing Guide)的Clojure web應用程序是幾乎不可能的,當你決定這樣做的時候,是很痛苦的。
建立安全的Clojure web應用程序需要更加容易點兒、需要集成了安全的框架,而不是孤立的類庫!我們已經(jīng)有了一些標準部件(crypto-password,friend),但是更大的開發(fā)和集成仍然是有必要的。
原文 Clojure web security is worse than you think
翻譯 臘八粥
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/11123.html
摘要:我們的目標是建立對每一種語言的認識,它們是如何進化的,未來將走向何方。有點的味道是堅持使用動態(tài)類型,但唯一還收到合理擁泵的編程語言,然而一些在企業(yè)的大型團隊中工作的開發(fā)者擇認為這會是的一個缺陷。 為什么我們需要如此多的JVM語言? 在2013年你可以有50中JVM語言的選擇來用于你的下一個項目。盡管你可以說出一大打的名字,你會準備為你的下一個項目選擇一種新的JVM語言么? 如今借助來自...
摘要:但是,在這篇文章中,我要說的是如何從一個不錯的工程師成為一個優(yōu)秀的工程師。大部分我認為的這個領域中優(yōu)秀的工程師都是這些優(yōu)秀的第三方庫的維護者。 來自Google的前端工程師-Philip Walton 分享了自己關于如何成為優(yōu)秀的工程師的一些觀點。個人感覺很有價值,所以翻譯成中文,方便大家閱讀。水平有限,如翻譯不妥之處請在評論中指出。 原文地址:http://philipwalton....
摘要:但是,在這篇文章中,我要說的是如何從一個不錯的工程師成為一個優(yōu)秀的工程師。大部分我認為的這個領域中優(yōu)秀的工程師都是這些優(yōu)秀的第三方庫的維護者。 來自Google的前端工程師-Philip Walton 分享了自己關于如何成為優(yōu)秀的工程師的一些觀點。個人感覺很有價值,所以翻譯成中文,方便大家閱讀。水平有限,如翻譯不妥之處請在評論中指出。 原文地址:http://philipwalton....
摘要:但是,在這篇文章中,我要說的是如何從一個不錯的工程師成為一個優(yōu)秀的工程師。大部分我認為的這個領域中優(yōu)秀的工程師都是這些優(yōu)秀的第三方庫的維護者。 來自Google的前端工程師-Philip Walton 分享了自己關于如何成為優(yōu)秀的工程師的一些觀點。個人感覺很有價值,所以翻譯成中文,方便大家閱讀。水平有限,如翻譯不妥之處請在評論中指出。 原文地址:http://philipwalton....
摘要:前面不短時間持續(xù)投入了時間在做應用架構(gòu)方面的考量一個是冒險進行了一次應用架構(gòu)的調(diào)整另一個是跟進了的進展當然實際上是同一個事情也許錯過的比收獲的還多一些不過能走到現(xiàn)在也算幸運了畢竟單頁面應用還面臨很多不成熟之處國慶長假過去不少現(xiàn)在的想法估計會 前面不短時間持續(xù)投入了時間在做 React 應用架構(gòu)方面的考量一個是冒險進行了一次應用架構(gòu)的調(diào)整, 另一個是跟進了 Redux 的進展當然, 實際...
閱讀 2019·2021-10-11 10:59
閱讀 1127·2021-09-07 09:59
閱讀 2293·2021-08-27 16:17
閱讀 2845·2019-08-30 15:54
閱讀 2324·2019-08-30 12:58
閱讀 1833·2019-08-30 12:53
閱讀 1524·2019-08-28 18:13
閱讀 793·2019-08-26 13:35