Keuntungan:
- Keupayaan untuk mengesahkan output AI pada tiga lapisan: ketepatan, keselamatan dan sumber/lesen
- Keupayaan untuk melindungi risiko seperti suntikan, pakej halusinasi dan rahsia yang terkubur dengan acuan dan alat yang selamat
- Keupayaan untuk membentangkan kod kritikal keselamatan kepada kelulusan jurutera yang cekap dan memahami tanggungjawab tidak boleh dipindah milik
Menjana kod AI adalah mudah; Mempercayai dia mahal. Satu-satunya tujuan unit ini adalah untuk mengubah prinsip "sahkan", yang telah kami ulangi dalam semua unit sebelumnya, kepada disiplin kejuruteraan yang sistematik. Kerana kod yang dihasilkan oleh AI, walaupun ia kelihatan betul pada pandangan pertama, membawa tiga bahaya berasingan: tidak berfungsi/tidak betul (halusinasi), tidak selamat (kelemahan) dan membawa risiko undang-undang/pelesenan. Mengetahui ketiga-tiga ini dan mewujudkan pintu untuk setiap daripada mereka menjadikan anda seorang profesional.
Di sini kita mempertimbangkan "pengesahan" pada tiga lapisan: ketepatan (adakah kod itu benar-benar berfungsi?), keselamatan (adakah ia menahan input berniat jahat?), dan asal/lesen (adakah saya berhak menggunakan kod ini?). Setiap lapisan mempunyai cara kawalannya sendiri, dan tiada satu pun daripadanya boleh dipintas dengan "itulah yang AI katakan."
Tiga Lapisan Risiko
1. Risiko ketepatan (halusinasi). Model mungkin memanggil fungsi yang tidak wujud, menyalahgunakan API, memintas kes tepi secara senyap. Kod itu kelihatan "munasabah" tetapi salah. Penawar: penyusunan, ujian, analisis statik dan pemeriksaan visual.
2. Risiko keselamatan. AI boleh mengulangi corak tidak selamat dalam data latihan: pertanyaan terdedah kepada suntikan SQL, input pengguna yang tidak disahkan, penyulitan lemah, penyahserikatan tidak selamat, pengalihan semula terbuka. Kod ini berfungsi tetapi terdedah kepada serangan. Penawar: semakan berfokuskan keselamatan, pengimbas automatik (SAST) dan mengenakan corak selamat yang diketahui.
3. Risiko sumber/lesen. AI mungkin menghasilkan output yang hampir menyerupai kod berlesen berhak cipta atau menyekat, atau mungkin mencadangkan pergantungan berlesen yang tidak sesuai. Penawar: semakan pergantungan dan lesen, semakan keaslian, dasar korporat.
Awas: Yang paling berbahaya daripada ketiga-tiga risiko ini ialah keselamatan; kerana kod itu boleh lulus ujian, berjalan lancar dalam pengeluaran, dan kelemahan hanya didedahkan apabila penyerang menemuinya. "Bekerja" tidak sama dengan "selamat."
Langkah demi Langkah: Gerbang Pengesahan Berlapis
- Bacalah dengan penuh kefahaman. Benar-benar memahami kod sebelum menerimanya; Jangan gabungkan kod yang anda tidak faham. Jika anda tidak dapat menerangkan "mengapa ia berfungsi", ia belum disahkan lagi.
- Sahkan ia wujud. Sahkan bahawa setiap fungsi, API dan pakej yang digunakan benar-benar wujud dan digunakan dengan betul (pintu halusinasi).
- Jalankan alat automatik. Pengkompil, linter (pengimbas gaya/ralat), penyemak jenis, ujian unit, dan jika boleh SAST (Pengujian Keselamatan Aplikasi Statik — alat yang mengimbas kod sumber untuk mencari kelemahan).
- Lihatlah dari sudut keselamatan. Adakah input itu disahkan? Adakah pertanyaan itu diparameterkan? Adakah rahsia itu terkubur? Adakah terdapat kawalan kebenaran?
- Semak sumber dan lesen. Adakah tanggungan baharu dilesenkan? Adakah output kelihatan terlalu serupa dengan pangkalan kod yang diketahui?
- Jika ia kritikal keselamatan, minta kelulusan pakar. Semakan bebas oleh jurutera yang cekap dalam bidang seperti pengesahan, pembayaran, kriptografi, kawalan akses adalah wajib.
Tiga Kes Mini
Kes 1 — Suntikan SQL ditangkap di pintu pemeriksaan. Kod hasilan AI yang menggabungkan input pengguna terus ke dalam pertanyaan SQL untuk titik akhir carian ("... WHERE nama = '" + q + "'"). Kod itu berfungsi dan lulus ujian. Pemeriksaan berfokuskan keselamatan dan pengimbasan SAST menangkap ini; Ia telah ditukar kepada pertanyaan berparameter (pernyataan yang disediakan). Jika ia tidak ditangkap, ia akan menjadi kerentanan kebocoran data klasik.
Kes 2 — Pakej halusinasi. AI mencadangkan pakej npm yang tidak wujud (fast-safe-parse) untuk tugasan. Apabila pembangun cuba memasangnya, pakej itu tidak dijumpai. Lebih teruk: dalam beberapa kes, penyerang boleh mengisi nama pakej "hantu" sedemikian dengan pakej sebenar yang berniat jahat (kekeliruan kebergantungan). Pelajaran: sahkan setiap pakej yang disyorkan terhadap pendaftaran rasmi dan sejarah muat turun/penyelenggaraan.
Kes 3 — Ketidakserasian lesen. Pustaka teman bagus yang dicadangkan oleh AI mempunyai lesen copyleft yang kukuh yang tidak serasi dengan lesen produk institusi. Imbasan lesen pergantungan melaporkan ini; Pasukan itu menggantikan lesen dengan alternatif yang sesuai. Tanpa pengesahan, beban undang-undang akan timbul dalam pengedaran produk.
Empat Templat Boleh Disalin
Semakan sendiri pra-kemasukan:
Sebelum menerima kod jana AI berikut, semak:1) Adakah setiap fungsi/API/pakej yang digunakan benar-benar wujud? Tandai suspek.2) Adakah terdapat sebarang input yang tidak sah, gabungan SQL/arahan, rahsia yang terkubur, kripto yang lemah?3) Apakah pepijat/kes tepi yang tidak ditangani? Labelkan setiap penemuan sebagai "tertentu / berkemungkinan" dan cadangkan pembetulan.{{kod}}
Kajian berfokuskan keselamatan:
Periksa kod ini dengan mata keselamatan. Cari kelemahan gaya OWASP yang biasa: suntikan, pengesahan/kebenaran yang rosak, pendedahan data sensitif, penyahserikatan tidak selamat, ubah hala yang tidak disahkan. Untuk setiap penemuan: risiko, senario eksploitasi, pemulihan. Ini adalah saringan awal; rujuk penemuan kritikal kepada semakan keselamatan manusia.{{kod}}
Ketergantungan dan semakan lesen:
Senaraikan kebergantungan yang ditambahkan/dicadangkan oleh kod ini. Untuk setiap: adakah pakej itu benar-benar wujud, adakah ia diselenggarakan, apakah lesen tipikalnya (MESTI DISAHKAN), dan adakah ia sebenarnya diperlukan untuk projek atau bolehkah ia dilakukan dengan alat sedia ada?{{kod atau senarai pergantungan}}
Pengenaan acuan selamat (dalam pengeluaran):
Tulis kod untuk {{task}}. Peraturan keselamatan WAJIB:- Sahkan/sanitasi semua input luaran.- Hanya gunakan pertanyaan berparameter dalam akses pangkalan data.- Jangan benamkan rahsia dalam kod; anggap pembolehubah persekitaran/pengurus rahsia - Jangan telan ralat; Pertimbangkan secara bermakna. Terangkan bagaimana kod mematuhi peraturan ini dalam 3 item.
Gesaan lemah / Gesaan kuat
Lemah: "Tulis pertanyaan yang mencari mengikut nama pengguna." (Kod yang terdedah kepada suntikan mungkin berlaku.)
Kuat: "Tulis fungsi yang mencari mengikut nama pengguna. Jangan sekali-kali menyertai input pengguna ke dalam pertanyaan sebagai rentetan; gunakan pertanyaan berparameter (penyataan yang disediakan). Sahkan input untuk panjang dan aksara. Terangkan dalam 2 ayat mengapa kod itu ditutup kepada suntikan."
Versi kuat mengenakan corak selamat dari awal; Oleh itu, ia memastikan bahawa kelemahan tidak berlaku sama sekali, dan bukannya menangkapnya kemudian. Walau bagaimanapun, adalah penting untuk menghantar kod yang dijana melalui pintu pengesahan.
Lapisan pengesahan
Alat/kaedah
Adakah "AI berkata" cukup?
ketepatan
Penyusunan, ujian, pemeriksaan visual
tidak
API/pakej realiti
Kawalan dokumen/rekod rasmi
tidak
Keselamatan
SAST, semakan keselamatan
tidak
Lesen/sumber
Kebergantungan & semakan lesen
tidak
Logik kritikal keselamatan
Kelulusan jurutera pakar
sama sekali tidak
Tanggungjawab Tidak Boleh Dipindah
Tanggungjawab terhadap ralat, kelemahan atau pelanggaran yang timbul daripada kod yang dihasilkan oleh alat AI adalah milik pasukan yang memasang dan mengedarkan kod tersebut, bukan kepada pembekal alat. Ini adalah fakta profesional dan juga sah: anda menandatangani. Jadi "AI menghasilkannya" bukan alasan, tetapi justifikasi untuk lebih berhati-hati. Khususnya dalam sistem kritikal keselamatan, output AI bukanlah pengganti untuk semakan dan kelulusan oleh jurutera yang berkelayakan dalam apa jua keadaan; Paling banyak, AI menyediakan pelan tindakan yang mempercepatkan jurutera itu.
Petua: Buat senarai semak pendek pada pasukan anda yang anda panggil "pintu pengesahan untuk kod jana AI" (bina + ujian + imbasan keselamatan + pemeriksaan visual). Apabila gerbang ini menjadi kebiasaan, kehilangan kelajuan adalah minimum dan pengurangan risiko adalah maksimum.
Kesilapan biasa
- Mengelirukan "berfungsi" dengan "selamat". Kod yang lulus ujian mungkin terdedah kepada serangan.
- Menggunakan pakej/API tanpa mengesahkannya. Paket halusinasi kedua-duanya rosak dan menimbulkan risiko keselamatan.
- Melangkau alat automatik. Linter, type checker dan SAST murah menangkap apa yang manusia rindukan.
- Mengabaikan lesen. Kebergantungan berlesen yang tidak wajar menimbulkan beban undang-undang ke atas pengedaran.
- Meletakkan tanggungjawab pada kenderaan. Pasukan bertanggungjawab untuk kod dalam pengeluaran; "AI melakukannya" bukan alasan.
Secara ringkasnya
Menerima output AI memerlukan tiga lapisan pengesahan: ketepatan (kompilasi, ujian, pemeriksaan visual), keselamatan (SAST dan semakan berfokuskan keselamatan), dan sumber/lesen (semakan kebergantungan). Sahkan bahawa setiap pakej dan API yang digunakan benar-benar wujud, kuatkuasakan corak selamat dari awal dan serahkan kod kritikal keselamatan untuk kelulusan jurutera yang berkelayakan. "Berfungsi" tidak bermakna selamat, dan "AI dihasilkan" tidak menghapuskan liabiliti. Pintu pengesahan adalah harga profesionalisme, bukan kelajuan.
Tugasan permohonan
Sengaja memberi AI tugasan sensitif keselamatan (mis. "fungsi yang mencari pangkalan data dengan input pengguna"), kali ini tanpa mengenakan corak selamat. Lulus kod masuk melalui templat "audit kendiri pra-kemasukan" dan "semakan berfokuskan keselamatan": adakah terdapat sebarang suntikan, rahsia terkubur, paket halusinasi atau input yang tidak disahkan? Kemudian tanya tugas yang sama sekali lagi dengan templat "pengenaan corak selamat" dan bandingkan kedua-dua output. Jika boleh, jalankan alat linter/SAST dan bandingkan penemuan dengan peraturan kendiri AI.
senarai semak
- [ ] Saya mengesahkan output AI pada tiga lapisan: ketepatan, keselamatan dan lesen.
- [ ] Saya mengesahkan bahawa setiap fungsi, API dan pakej yang digunakan sebenarnya wujud.
- [ ] Saya menjalankan kompilasi, ujian, linter dan, jika boleh, alat SAST.
- [ ] Saya mengenakan corak selamat (pertanyaan berparameter, pengesahan input, pengurusan rahsia) dari awal.
- [ ] Saya menyemak pelesenan dan keperluan tanggungan baharu.
- [ ] Saya menyerahkan kod kritikal keselamatan untuk kelulusan jurutera yang cekap dan saya faham bahawa saya bertanggungjawab.