<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Java 安全開發應該注意些什么


    發現錯別字 1年前 提問
    回答
    1
    瀏覽
    241
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1

    Java安全開發需要注意如下方面:

    • 保持代碼的簡潔:相對而言,越復雜的代碼越容易出現問題,所以開發者應該盡量保持代碼的簡潔。

    • 測試中盡可能模擬線上環境:生產過程中一個典型的場景就是只使用1到3個帳戶進行測試,而這個數量本應是1000到2000個的。在做性能測試時,使用的數據必須是真實并且未經裁剪的。不貼近真實環境的性能測試,可能會帶來不可預料的性能、拓展和多線程問題。這里也可以采取預發布環境的方式來解決部分問題。

    • 及時更新依賴組件版本:在Java開發中,開發者經常會用到各類開源組件來實現自己的功能點,但是許多開發者不常關注安全資訊,不了解開源組件的哪個版本存在什么樣的漏洞,從而可能會引入安全漏洞。以在選擇開源組件版本的時候,應優先選擇最新發布的組件,因為最新版本的組件通常都會解決歷史安全問題,因此使用最新版本組件可以將安全風險降到最低。

    • 將一些需要變動的配置寫在屬性文件中:比如,沒有把一些需要并發執行時使用的線程數設置成可在屬性文件中配置。那么你的程序無論在DEV環境中,還是TEST環境中,都可以順暢無阻地運行,但是一旦部署在PROD上,把它作為多線程程序處理更大的數據集時,就會拋出IOException,原因也許是線上環境并發造成也許是其他。如果線程數目可以在屬性文件中配置,那么使它成為一個單線程應用程序就變得十分容易了。我們不再需要為了解決問題而反復地部署和測試應用了。這種方法也同樣適用于配置URL、服務器和端口號等。這里推薦使用屬性文件外化這些配置,文件格式使用properties、yaml、hocon、json都可以。下面的類實現了對這些格式的文件的spring注入支持,包括占位符支持。

    • 安全設計上一個系統要遵循最小權限原則:網絡服務隨處可見,從而使得黑客可以輕易地利用它進行拒絕服務攻擊。所以,設計系統時,需要遵循“最小權限”原則,采用白名單等方式。

    • 對于外部調用及內部服務都要做容錯處理:不管是RPC調用還是對于第三方服務的調用,都不能想當然的認為可用性是100%的。不允許出現服務調用超時和重試,將會對應用程序的穩定性和性能造成不利的影響。

    • 做好系統關鍵功能的監控、錯誤恢復、備份:對于系統一些至關重要的功能模塊要做好對其的監控,防止其影響系統的運行,造成不可估算的損失。另外,如果可以,監控到故障后去去試圖恢復,恢復失敗再發送告警。對于一些很重要的數據文件,還要做到冗余備份,防止發生一些突然故障造成數據丟失。

    • 制定好項目回滾計劃:新的功能上線時,如果發生故障,沒有一份回滾計劃,那么可能會手忙腳亂而造成線上服務一段時間不可用。有一個良好的回滾計劃,可以讓你能夠有條不紊的執行相關操作,在可控時間內將系統恢復到一個可運行的狀態。

    • 項目上線前要做好量化分析:對于項目中用到的內存、數據庫、文件、緩存等,要做好量化分析。預估出未來一段時間的空間占用,給運維分配機器時一個參考。防止,由于數據量增長過快,導致存儲不夠。這一點是非常重要的,不然很容易造成線上服務不可用。

    • 在一些關鍵技術領域具有充足的知識儲備:在關鍵的技術領域比如設計模式、JVM調優、多線程“并發問題”、事務問題,包括分布式事務、性能問題,包括GC、計算等、緩存等方面,具有充足的知識儲備。

    • 選擇最合適的工具/技術:很多情況下,開發者會在生產系統中使用一門想要學習的語言或某種工具。通常這不是最好的選擇。比如,為已經實際上是關系型的數據使用NoSQL數據庫。不管是語言還是工具,都有其適用的場景。不能求新,也不能以“自我”為標準。

    • 添加安全相關的HTTP請求頭:現代瀏覽器已經支持很多和安全相關的請求頭(header),當添加這些HTTP安全請求頭時,瀏覽器在處理網站內容時會應用相應的安全機制,能夠緩解XSS,代碼注入,點擊劫持等攻擊方式。例如,使用Strict-Transport-Security(嚴格安全傳輸),就可以強制要求瀏覽器僅通過HTTPS進行通信。

    • 異常信息不輸出給用戶:異常對象引起的錯誤返回可能包含敏感信息,在系統拋出異常后,異常信息如果輸出給用戶,可能會被攻擊者利用。例如控制輸入參數來暴露應用程序的內部結構和機制,異常消息文本和異常類型可能會泄露信息,以 FileNotFoundException 為例。這些消息包含有關文件系統布局的信息,異常類型顯示丟失的請求文件。為了保護 Java 代碼應用程序,開發者們應該過濾異常消息和異常類型,避免直接暴露給用戶。

    • 避免記錄敏感信息:開發者們在開發過程中,會接收到來自用戶的許多敏感信息,例如信用卡和銀行卡號碼、身份證、手機號和密碼等信息,這些對犯罪分子來說是高度敏感和有價值的,數據盜竊對個人和組織造成巨大傷害。開發者們應避免將此類信息明文存儲在日志文件中。 如果必須用到身份證等任何敏感信息,可以考慮僅記錄身份證號的特征信息,例如最后四位數字或者hash,并確保使用經過驗證的脫敏工具庫對其進行加密。

    回答所涉及的環境:聯想天逸510S、Windows 10。

    1年前 / 評論
    亚洲 欧美 自拍 唯美 另类