為什麼 AI 生成的程式碼預設就是不安全的
AI 是在為你給它的提示詞做最佳化,而你的提示詞幾乎總是說“讓它能跑起來”,從不說“讓它安全”。於是它產出的是通往一個能用功能的最短路徑。而最短路徑通常就是不安全的那條:用字串拼接出來的查詢、一個沒有任何許可權檢查的介面(endpoint,端點——通往你應用、可被訪問的那些門之一,也就是它用來應答請求的一個具體 )、一個直接內聯貼上進去的金鑰——因為它學到的示例就是這麼寫的。
更糟的是,AI 是從整個網際網路學來的——包括十年裡那些本身就不安全的教程和廢棄倉庫。在它的訓練資料裡,不安全的程式碼比安全的程式碼更常見,因為安全的程式碼更難寫、也更少有人發出來。當你讓它寫“一個登入表單”時,從統計上看你很可能拿到網際網路上那個平均水平的登入表單,而網際網路上那個平均水平的登入表單是有問題的。
AI 也完全沒有威脅意識。一個人在做檔案上傳功能時會閃過一絲擔憂——要是有人上傳點噁心的東西怎麼辦? AI 什麼都感覺不到。無論這段處理邏輯是滴水不漏還是門戶大開,它都用同樣的自信把它寫出來。沒有遲疑,沒有那句“嗯,這部分讓我有點不放心”。這份不放心,得你自己來提供。
要點不是“AI 程式碼很危險,別用它”。要點是**“它能跑”和“它安全”是兩個不同的問題**,而 AI 只會回答第一個,除非你逼它回答第二個。