博客 / 詳情

返回

讓 AI 分析我 3 年前寫的代碼,全是漏洞!

大家好,俺是程序員魚皮。最近逛 GitHub 的時候,發現了一個挺有潛力的開源項目 —— DeepAudit,讓 AI 幫你挖掘項目漏洞。

勢頭很猛啊,短短時間就漲了不少 star,看這 star 趨勢圖:

這是一個 AI 代碼審計工具,能自動分析你的代碼,找出潛在的安全漏洞和代碼問題。

作者很貼心地提供了在線體驗版,可以直接使用,當然也支持本地部署。下面魚皮以作者部署的在線體驗版,帶大家體驗一下這個項目的功能。

首先需要配置自己的大模型 API Key,國內的很多大模型都支持:

如果想直接導入並分析你在 GitHub 上的項目,而不是手動上傳代碼,那麼還需要配置 GitHub Token,讓工具能夠讀取到你的倉庫代碼。

可以在 GitHub 上生成一個新的 Token:

配置好之後,就可以創建一個要分析的項目了,倉庫地址要填寫正確。這裏魚皮拿自己 3 年前做的個人開源項目 —— SQL 代碼和數據生成器試試水。

創建新項目

然後新建一個審計任務:

填寫要分析的分支,還可以設置一些文件排除規則,比如排除 node_modules、測試文件等。

點擊開始分析,AI 就屁顛兒屁顛兒幹活了~

我去,竟然發現了 123 個問題?!

不過能寫出 123 個問題,我感覺自己也是挺厲害的哈哈哈。

進入任務詳情頁面,我倒要看看都是什麼問題。

先看看最嚴重的 —— SQL 注入漏洞。

AI 的解釋還挺到位的,確實存在 SQL 注入風險。當時這麼寫純屬圖方便,沒想到被 AI 一眼看穿了。

一些小細節也被指出來了,比如硬編碼、異常處理不夠完善、日誌記錄不規範等。

不過也有一些誤報,AI 把正常的代碼邏輯判斷成了問題。

總體來説,這個工具還有進步空間,但已經很實用了。正好我們團隊需要這樣的代碼審計工具,還是挺期待作者能進一步完善的。

審計完成後,還可以直接導出報告:

一下子就得到了整整 70 多頁的專業報告!

想想我大學的時候做課設作業,要是有 AI 幫忙生成這種報告,不得爽飛邊子了?

除了項目審計,作者還提供了即時分析功能。不過這個就沒什麼新意了,我們團隊的 代碼小抄在 24 年初就已經上線了這個功能。

我體驗這個項目的時候,還有很多功能沒做完,不過這也是 MVP 最小可行產品原則嘛,快速驗證想法最重要。

值得一提的是,作者更新非常頻繁。截止到目前,項目界面已經煥然一新了,更有極客範兒。

在審計流日誌頁面可以看到 AI 思考分析的過程:

還有智能儀表盤,可以直觀地看到代碼質量趨勢:

 

最後

這個項目的實現思路其實挺值得學習的。通過調用大模型的 API,讓 AI 理解代碼邏輯,然後根據常見的安全漏洞模式和最佳實踐進行分析,最後生成結構化的審計報告。整個流程和 AI 代碼審查是類似的,但更專注於安全漏洞的發現。

DeepAudit 架構圖

對於個人開發者來説,這類工具可以幫你在提交代碼前發現潛在問題,拿來檢測一下自己之前的老項目代碼也是不錯的;對於團隊來説,可以把 AI 接入到 CI/CD 流程中,自動化代碼安全檢查。雖然本項目暫時還有誤報,但隨着 AI 能力的提升,以及作者在領域知識方面的填充,相信會越來越準確。

來試試看,你的項目代碼裏有多少個 Bug?

更多編程學習資源

  • Java前端程序員必做項目實戰教程+畢設網站

  • 程序員免費編程學習交流社區(自學必備)

  • 程序員保姆級求職寫簡歷指南(找工作必備)

  • 程序員免費面試刷題網站工具(找工作必備)

  • 最新Java零基礎入門學習路線 + Java教程

  • 最新Python零基礎入門學習路線 + Python教程

  • 最新前端零基礎入門學習路線 + 前端教程

  • 最新數據結構和算法零基礎入門學習路線 + 算法教程

  • 最新C++零基礎入門學習路線、C++教程

  • 最新數據庫零基礎入門學習路線 + 數據庫教程

  • 最新Redis零基礎入門學習路線 + Redis教程

  • 最新計算機基礎入門學習路線 + 計算機基礎教程

  • 最新小程序入門學習路線 + 小程序開發教程

  • 最新SQL零基礎入門學習路線 + SQL教程

  • 最新Linux零基礎入門學習路線 + Linux教程

  • 最新Git/GitHub零基礎入門學習路線 + Git教程

  • 最新操作系統零基礎入門學習路線 + 操作系統教程

  • 最新計算機網絡零基礎入門學習路線 + 計算機網絡教程

  • 最新設計模式零基礎入門學習路線 + 設計模式教程

  • 最新軟件工程零基礎入門學習路線 + 軟件工程教程

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.