JavaRush /Java Blog /Random-TW /喝咖啡休息#35。如何遵守 GitHub 安全規則。快速調試 Java 程式碼的有用技巧

喝咖啡休息#35。如何遵守 GitHub 安全規則。快速調試 Java 程式碼的有用技巧

在 Random-TW 群組發布

如何確保 GitHub 上的安全

資料來源:DZone GitHub 當之無愧地被認為是最受歡迎的團隊開發平台。根據去年秋天的數據,超過 4,000 萬名程式設計師使用了這項服務。由於他們中的大多數人都使用開源來創建軟體,因此在 Github 上工作時的安全性應該是您的首要任務。重複使用程式碼會增加傳播漏洞的風險。這意味著每個 GitHub 使用者都應該高度重視創建安全的開發環境。喝咖啡休息#35。 如何遵守 GitHub 安全規則。 快速調試 Java 程式碼的有用技巧 - 1為了確保 GitHub 程式碼的安全,您需要遵循 8 條規則。

提供存取控制

存取控制是提高安全性的最佳方法之一,不僅在 GitHub 上,而且在任何其他需要程式碼保護的環境中也是如此。GitHub 提供了多種降低工作風險的方法。首先,養成授予最小權限的習慣——僅向儲存庫使用者授予他們完成工作所需的權限。您還應該遵循其他存取控制方法:
  • 限制儲存庫的創建,以防止使用者在公共儲存庫中洩露有關該組織的資訊;
  • 啟用分支保護和狀態檢查,以便使用者可以安全地合併提交或管理分支;
  • 允許或停用私有儲存庫的分叉,以確保使用者不會洩漏或與他人分享您的程式碼;
  • 撤銷所有不再是社群成員或公司員工的不活躍使用者的存取權限;
  • 定期檢查您的專案在 GitHub 上的存取權限;
  • 確保使用者不會與他人分享 GitHub 帳戶存取權限或密碼;
  • 確保每個儲存庫使用者在其帳戶中使用雙重認證;
  • 定期變更個人存取權杖和 SSH 金鑰。

切勿將存取資料儲存在 GitHub 檔案中

透過程式碼、設定檔或提交訊息洩漏對 GitHub 儲存庫的存取資訊可用於攻擊。為了防止敏感資料被加入到您的儲存庫中,請使用存取控制工具,例如git-secretsVault。這些工具會掃描您的程式碼庫,並在程式碼或設定檔中發現敏感資訊時變更存取權限。如果您在 GitHub 儲存庫中發現敏感訊息,應立即將其刪除。但由於 GitHub 保留了儲存庫中所有提交的歷史記錄,因此僅刪除資料是不夠的。您需要從 GitHub 儲存庫歷史記錄中刪除檔案。提高安全性的一個重要步驟是替換以前公開的所有密碼和令牌。

為易受攻擊的依賴項啟用警報

隨著 GitHub 使用者處理越來越多的項目,控制越來越多的依賴對象變得越來越困難。幸運的是,GitHub為儲存庫中發現的易受攻擊的依賴項提供自動警報。這些警報基於國家漏洞資料庫(NVD)、GitHub 安全公告和 WhiteSource 漏洞資料庫,支援 200 多種程式語言。GitHub 警報讓使用開源程式庫變得更輕鬆、更安全。

檢查從 GitHub 添加的應用程式

GitHub Marketplace 包含由第三方開發人員和公司編寫的數百個應用程式。因此,仔細檢查添加到儲存庫的每個應用程式非常重要。從 GitHub Marketplace 安裝應用程式時,請遵循以下準則:
  • 強制執行最小特權原則。切勿給予應用程式超出其所需的存取權限;
  • 始終質疑應用程式請求的存取權限或權限。考慮一下這種級別的訪問可能會造成的損害;
  • 在授予公司或應用程式開發人員存取您的 GitHub 儲存庫之前驗證他們是否確實存在;
  • 檢查應用程式的功能和安全性。如果其中包含漏洞,您可能會成為駭客攻擊的受害者;
應用程式的安全性是透過其最薄弱的部分來判斷的。這也適用於 GitHub 儲存庫。因此,在授予應用程式存取您的儲存空間之前,請確保您信任它並且它與其要求的存取等級相符。

檢查所有從GitHub導入的程式碼

開發人員經常使用其他人的程式碼。每次將別人的部分程式碼複製到您的專案中時,請對其進行全面審查。這似乎是浪費時間,特別是對於小型項目,但如果您忽略此規則,您可能會在儲存庫中引入漏洞。與導入代碼相關的另一個風險是它可能包含敏感信息,例如存取資料。如果它們儲存在 GitHub 檔案中,則會產生另一個安全風險。在複製程式碼之前對其進行審核有助於識別此類漏洞。不要因為其他人的程式碼位於私人儲存庫中而認為它是安全的。它很可能會損害您的程式碼庫。

對您的儲存庫使用自動靜態原始碼分析

您可以使用多種第三方工具來分析儲存庫中的漏洞。其中之一是WhiteSource Bolt,它是來自 GitHub Marketplace 的免費工具。WhiteSource Bolt 會掃描您的儲存庫以查找所有公開程式碼中的漏洞。它還提供有關漏洞的詳細資訊並建議修復選項。

使用適合您需求的 GitHub 計劃

許多公司都有政策阻止開發人員在 GitHub 等平台上發布程式碼。這些限制在政府部門和金融機構中尤其常見。如果您在高度監管的環境中工作,請使用GitHub Enterprise,這是一種允許您在本機伺服器上託管儲存庫的企業計劃。這提供了更高層級的安全性,因為它允許公司的開發人員存取所有項目,而不必擔心未經授權的 GitHub 用戶。

在您的專案中遵循全面的安全策略

安全是一項集體責任。如果您在團隊中工作,制定所有利害關係人必須遵守​​的安全規則非常重要。理想情況下,您應該在規劃階段將網路安全和開發團隊聚集在一起,以確保他們同步工作。這將更容易確保開發過程中的保護。如果您的團隊成員之一不小心儲存密碼或其他敏感資訊,則可能會使整個儲存庫面臨風險。為了避免這種情況,請清楚記錄所有同事必須遵循的安全程序。

結論

保護 GitHub 上的程式碼很容易。您只需要利用 GitHub 的內建安全功能來確保適當的存取控制。如果您對最大程度的保護感興趣,請整合其他工具,以提高開發各個階段的程式碼安全性。我們也建議您查看文件的 GitHub商業免費使用者安全部分。透過這種方式,您可以獲得有關程式碼安全和保護的更多資訊。

快速調試 Java 程式碼的有用技巧

資料來源:Hackernoon 除了編寫高效的程式碼之外,提高調試能力是讓 Java 開發人員的生活變得更輕鬆的最有用的事情之一。這在現代軟體開發條件下尤其重要,因為軟體世界正在積極轉向分散式架構和非同步程式碼。喝咖啡休息#35。 如何遵守 GitHub 安全規則。 快速調試 Java 程式碼的有用技巧 - 2雖然軟體錯誤是不可避免的,但在複雜的建置中檢測和修復它們變得越來越困難。而當進入產品發佈階段時,調試過程就變成更嚴重的問題。不幸的是,沒有辦法避免這種情況——調試是必要的。為了幫助您,我決定分享一些在不同開發階段調試 Java 應用程式的有用技巧。

使用控制點

讓我們從斷點開始,這是任何調試過程中一個明顯但非常重要的點。檢查點可讓您停止應用程式的執行,以便您可以分析程式的狀態並找出程式碼無法正常運作的原因。每個偵錯器都提供多個斷點選項,包括條件斷點、異常斷點、觀察點和追蹤點。了解如何以及何時使用不同類型的斷點可以使調試過程更加順利。值得一提的是,一些現代工具支援檢查點而不中斷應用程式。這樣就可以在程式碼中設定點並收集調試數據,而無需停止程式執行。

顯示邏輯結構

在監視 Java 類別中的內容時,顯示邏輯結構功能非常有用。如果啟用此功能,變數清單將顯示一個數組,這在偵錯上下文中更有用。這非常方便,特別是當您的程式碼缺少物件的 toString() 方法時。變數視圖還允許您在偵錯時直接更改變數的值。由於不必使用更改的輸入資料重新啟動偵錯會話,因此可以節省大量時間。

學習瀏覽程式碼庫

任何 Java 偵錯器都可以使用多個函數,這些函數可讓您在偵錯時瀏覽程式碼的不同部分。其中一些包括“跑到線”、“跨過”、“步入”和“步入”。除了這些之外,還可以考慮另外兩個選項:
  1. 下降到幀 - 此函數用於返回到堆疊幀中的某個點。如果您錯過了某個點並需要返回,只需使用“Drop to Frame”功能即可。
  2. 步驟過濾 - 允許您在偵錯期間跳過某些資料包。當您可以簡單地過濾掉不需要的類型時,您不必瀏覽 JDK 系統中的所有類別。
為了提高程式碼導航速度,您需要掌握功能鍵組合:
  • F5 - “步入”。
  • F6 - 「跨過」。
  • F7 - 用於「步驟返回」。
  • F8 - 運轉到下一個檢查點。
儘管不同 IDE 的熱鍵可能有所不同,但如果您記住它們,您就不必更頻繁地使用滑鼠。

學會避免死鎖

當兩個或多個執行緒在形成循環相依關係後發生阻塞時,就會出現死鎖情況。由於一組 Java 執行緒通常正在等待另一個資源,這可能會導致應用程式完全停止。偵錯 jstack 死鎖可能非常困難,因為它們不顯示記憶體峰值、CPU 負載等問題指標。有多種方法可以解決 jstack 死鎖情況。首先,您可以擷取 JVM 叢集中的多個執行緒轉儲來推斷執行緒模式。在這種情況下,分析靜態線程轉儲可能還不夠。根據 JVM 叢集的大小,可能需要搜尋多個文件,這通常是一個勞動密集且耗時的過程。最好使用應用程式監視解決方案,該解決方案提供隔離執行緒死鎖所需的 JV 層和程式碼層。幸運的是,有一些創新工具可以幫助解決這種情況,包括一些現代調試器以及商業 APM 工具。這些工具可以提高 Java 程式碼的透明度,同時識別錯誤。

利用生產調試器的強大功能

大多數開發人員通常遵循的典型偵錯過程包括複製環境、隔離錯誤,然後修復它。然而,這並不適用於所有情況。如果是這種情況,開發人員應該使用強大的生產偵錯器。Rookout 就是這樣的工具之一。它允許您從應用程式收集調試數據,而無需更改其狀態或流量控制。使用 Rookout,您可以設定不間斷點來取得完整的堆疊追蹤、擷取即時變數或除錯所需的任何其他應用程式資料。因此,無需使用高開銷的監控解決方案進行生產調試,只需使用 Rookout,它提供了調試應用程式所需的一切,而無需重新部署或編寫新程式碼。無論您是在伺服器端還是容器化應用程式上工作,Rookout 都是您偵錯工具庫的絕佳補充。

不要忘記遠端調試

絕大多數 IDE(例如 NetBeans、Eclipse、IntelliJ IDEA 和 Visual Studio)都支援遠端偵錯,這是一種允許您修復位於另一台電腦上的 Java 程式碼的技術。當您的系統不支援本機偵錯,或者您的電腦沒有足夠的資源來運行偵錯器時,這一點尤其重要。若要執行遠端偵錯,您必須提供偵錯器將用於連接到遠端連接埠的設定資訊。遠端偵錯對於異地開發人員需要連接到應用程式來修復錯誤的故障排除也很有用。請記住,有時調試可能比實際實現花費更長的時間。當您磨練 Java 偵錯技能時,請始終努力編寫乾淨、高效的程式碼 - 當修復錯誤時,它會得到回報。如果您感覺事情正在失去控制,那麼休息一下總是個好主意。bug 是一個程式設計難題,許多程式設計師已經設法在不靠近電腦的情況下解決這個問題。使用上述策略來消除 Java 調試問題。快樂編碼!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION