Isi kandungan:
- Jangan membuat andaian tentang input pengguna
- Kegagalan Menangani Anggun
- Mengekalkan Log Program
- Mengikuti proses pembangunan yang baik
- Kawalan versi adalah sesuatu yang pelik. Ia adalah semulajadi untuk tidak bimbang tentang versi 1. 1 apabila anda berada di bawah pistol untuk mendapatkan versi 1. 0 keluar pintu dan ke tangan yang terulur 'dibayangi. Walau bagaimanapun, kawalan versi adalah topik penting yang mesti ditangani lebih awal kerana ia mesti dibina dalam reka bentuk awal program dan tidak digantung kemudian.
- Pengesahan pengguna haruslah mudah: Pengguna menyediakan nama akaun dan kata laluan, dan program anda melihat nama akaun di atas meja dan membandingkan kata laluan. Sekiranya kata laluan sepadan, pengguna disahkan. Tetapi ketika datang ke antihacking, tidak ada yang mudah.
- Anda boleh membuat andaian tertentu apabila semua aplikasi anda berjalan pada satu komputer. Untuk satu perkara, sebaik sahaja pengguna telah mengesahkan dirinya sendiri, anda tidak perlu bimbang tentang dirinya yang berubah menjadi orang yang berbeza. Aplikasi yang berkomunikasi dengan pelayan jauh tidak boleh membuat andaian ini - penggodam yang sedang mendengar di baris boleh menunggu sehingga pengguna mengesahkan dirinya dan kemudian merampas sesi tersebut.
- Code obfuscation
- Kerja menandatangani kod dengan menjana hash selamat kod boleh laku dan menggabungkannya dengan sijil yang dikeluarkan oleh pihak berkuasa sijil yang sah. Proses ini berfungsi seperti berikut: Syarikat yang membuat program ini mesti mendaftar dengan salah satu pihak berkuasa sijil terlebih dahulu.
- Seperti apa-apa amaran yang baik, peringatan ini mempunyai beberapa bahagian. Pertama, "Gunakan penyulitan sekiranya perlu. "Ini cenderung untuk memikirkan fikiran tentang menyampaikan maklumat akaun bank melalui Internet, tetapi anda harus berfikir lebih umum daripada itu.
Video: How to find malicious software on your computer 2024
Sebagai pengaturcara C ++, anda perlu mempelajari perkara yang perlu anda lakukan dalam kod C ++ anda untuk mengelakkan menulis program yang terdedah kepada penggodam. Terdapat juga ciri-ciri yang boleh anda sediakan jika sistem pengendalian anda menyokongnya, seperti Rawak Layout Rawak Ruang (ASLR) dan Pencegahan Pelaksanaan Data (DEP).
Jangan membuat andaian tentang input pengguna
Penglihatan terowong Programmer baik-baik saja semasa fasa pembangunan awal. Pada satu ketika, bagaimanapun, programmer (atau, lebih baik lagi, beberapa pengaturcara lain yang tidak ada kaitan dengan perkembangan kod) perlu duduk dan melupakan masalah segera. Dia perlu bertanya kepada diri sendiri, "Bagaimana program ini akan bertindak balas terhadap input haram? "
Berikut adalah beberapa kaedah untuk memeriksa input:
-
Jangan membuat andaian mengenai panjang input.
-
Jangan terima lebih banyak input daripada anda mempunyai ruang dalam penampan panjang tetap (atau buffer pembolehubah bersaiz yang digunakan).
-
Semak julat setiap nilai berangka untuk memastikan ia masuk akal.
-
Semak dan penapis aksara khas yang boleh digunakan oleh penggodam untuk menyuntik kod.
-
Jangan lulus input mentah ke perkhidmatan lain, seperti pelayan pangkalan data.
Dan lakukan semua pemeriksaan yang sama pada nilai yang dikembalikan dari perkhidmatan terpencil. Penggodam tidak boleh berada di sisi input, dia mungkin berada di sisi tindak balas.
Kegagalan Menangani Anggun
Program anda harus bertindak balas dengan munasabah terhadap kegagalan yang berlaku dalam program ini. Sebagai contoh, jika panggilan anda ke fungsi perpustakaan mengembalikan nullptr, program itu harus mengesan ini dan melakukan sesuatu yang munasabah.
Masuk akal di sini difahami secara adil. Program ini tidak perlu mengendus untuk mengetahui dengan tepat mengapa fungsi tersebut tidak memulangkan alamat yang munasabah. Ia mungkin permintaan itu terlalu banyak kerana memori tidak masuk akal. Atau mungkin pembina mengesan beberapa jenis input haram.
Tidak penting. Intinya ialah program itu harus memulihkan keadaannya dengan sebaik-baiknya dan menetapkan untuk input yang akan datang tanpa merosakkan atau merosakkan struktur data sedia ada seperti timbunan.
Mengekalkan Log Program
Buat dan jaga log runtime yang membolehkan seseorang membina semula apa yang berlaku sekiranya berlaku kegagalan keselamatan. (Sebenarnya, ini sama seperti berlaku sekiranya berlaku sebarang kegagalan.) Contohnya, anda mungkin mahu log setiap kali seseorang masuk ke dalam atau keluar dari sistem anda.
Anda pasti akan tahu siapa yang telah log masuk ke sistem anda apabila peristiwa keselamatan berlaku - ini adalah kumpulan yang paling berisiko kehilangan keselamatan dan yang paling mencurigakan ketika mencari penyebabnya.Di samping itu, anda perlu log masuk sebarang kesalahan sistem yang termasuk kebanyakan pengecualian.
Program pengeluaran dunia nyata mengandungi sebilangan besar panggilan yang kelihatan seperti berikut:
log (DEBUG, "Pengguna% s memasukkan kata laluan sah", sUser);
Ini hanyalah satu contoh. Setiap program memerlukan beberapa jenis fungsi log. Sama ada atau tidak ia sebenarnya dipanggil log () tidak penting.
Mengikuti proses pembangunan yang baik
Setiap program harus mengikuti proses pembangunan formal yang dipikirkan dengan baik. Proses ini harus mencakup sekurang-kurangnya langkah-langkah berikut:
-
Mengumpulkan dan keperluan dokumen, termasuk keperluan keamanan. Reka bentuk ulasan.
-
Mematuhi piawaian pengekodan.
-
Uji ujian bawah.
-
Menjalankan ujian penerimaan rasmi yang berdasarkan kepada keperluan asal.
-
Selain itu, ulasan rakan seperjuangan harus dijalankan di tempat utama untuk mengesahkan bahawa keperluan, reka bentuk, kod dan prosedur ujian adalah berkualiti tinggi dan memenuhi piawaian syarikat.
Melaksanakan kawalan versi yang baik
Kawalan versi adalah sesuatu yang pelik. Ia adalah semulajadi untuk tidak bimbang tentang versi 1. 1 apabila anda berada di bawah pistol untuk mendapatkan versi 1. 0 keluar pintu dan ke tangan yang terulur 'dibayangi. Walau bagaimanapun, kawalan versi adalah topik penting yang mesti ditangani lebih awal kerana ia mesti dibina dalam reka bentuk awal program dan tidak digantung kemudian.
Satu aspek yang hampir remeh daripada kawalan versi ialah mengetahui versi program yang pengguna gunakan. Apabila pengguna memanggil dan berkata, "Ia melakukan ini apabila saya mengklik pada itu," meja bantuan itu benar-benar perlu mengetahui versi program yang pengguna gunakan. Dia boleh menggambarkan masalah dalam versi yang telah ditetapkan dalam versi semasa.
Otentikasi pengguna dengan selamat
Pengesahan pengguna haruslah mudah: Pengguna menyediakan nama akaun dan kata laluan, dan program anda melihat nama akaun di atas meja dan membandingkan kata laluan. Sekiranya kata laluan sepadan, pengguna disahkan. Tetapi ketika datang ke antihacking, tidak ada yang mudah.
Pertama, jangan simpan kata laluan itu sendiri dalam pangkalan data. Ini dipanggil menyimpan mereka
dalam jelas dan dianggap bentuk yang sangat buruk. Ia terlalu mudah untuk penggodam untuk mendapatkan tangannya pada fail kata laluan. Sebaliknya, selamatkan kata laluan yang selamat. Menguruskan sesi jauh
Anda boleh membuat andaian tertentu apabila semua aplikasi anda berjalan pada satu komputer. Untuk satu perkara, sebaik sahaja pengguna telah mengesahkan dirinya sendiri, anda tidak perlu bimbang tentang dirinya yang berubah menjadi orang yang berbeza. Aplikasi yang berkomunikasi dengan pelayan jauh tidak boleh membuat andaian ini - penggodam yang sedang mendengar di baris boleh menunggu sehingga pengguna mengesahkan dirinya dan kemudian merampas sesi tersebut.
Apa yang boleh dilakukan pemrogram keselamatan untuk mengelakkan situasi ini? Anda tidak mahu berulang kali meminta pengguna untuk kata laluannya untuk memastikan sambungan tidak dirampas. Penyelesaian alternatif adalah untuk menubuhkan dan mengurus sesi
. Anda melakukan ini dengan mempunyai pelayan menghantar aplikasi jarak jauh cookie sesi apabila pengguna telah berjaya mengesahkan dirinya sendiri. Obfuscate your code
Code obfuscation
adalah perbuatan membuat executable sebagai sukar bagi seorang peretas untuk memahami yang mungkin. Logiknya mudah. Semakin mudah bagi penggodam memahami bagaimana kod anda berfungsi, semakin mudah bagi penggodam untuk mengetahui kerentanan.
Langkah paling mudah yang boleh anda lakukan ialah memastikan anda hanya mengedarkan versi Rilis program anda yang tidak termasuk maklumat simbol debug. Apabila anda mula-mula membuat fail projek, pastikan untuk memilih kedua-dua versi Debug dan Rilis harus dibuat.
Jangan sekali-kali, mengedarkan versi aplikasi anda dengan maklumat simbol yang disertakan.
Tandatangani kod anda dengan sijil digital
Kerja menandatangani kod dengan menjana hash selamat kod boleh laku dan menggabungkannya dengan sijil yang dikeluarkan oleh pihak berkuasa sijil yang sah. Proses ini berfungsi seperti berikut: Syarikat yang membuat program ini mesti mendaftar dengan salah satu pihak berkuasa sijil terlebih dahulu.
Setelah pihak berkuasa sijil yakin bahawa Syarikat saya adalah entiti perisian yang sah, ia mengeluarkan sijil. Ini adalah nombor panjang yang boleh digunakan sesiapa sahaja untuk mengesahkan bahawa pemegang sijil ini adalah Syarikat Saya yang terkenal di San Antonio.
Gunakan penyulitan selamat di mana perlu
Seperti apa-apa amaran yang baik, peringatan ini mempunyai beberapa bahagian. Pertama, "Gunakan penyulitan sekiranya perlu. "Ini cenderung untuk memikirkan fikiran tentang menyampaikan maklumat akaun bank melalui Internet, tetapi anda harus berfikir lebih umum daripada itu.
Data yang dikomunikasikan, sama ada melalui Internet atau lebih banyak rangkaian yang lebih kecil, dikenali secara umum sebagai
Data dalam Motion. Data dalam Motion harus disulitkan melainkan ia tidak berguna kepada penggodam. Data yang disimpan pada cakera dikenali sebagai
Data pada Rest. Data ini juga perlu disulitkan jika terdapat peluang cakera yang hilang, dicuri, atau disalin. Perniagaan secara rutin menyulitkan cakera keras pada komputer riba syarikat mereka sekiranya komputer riba dicuri di pengimbas keselamatan di lapangan terbang atau ditinggalkan teksi di suatu tempat. Alat penyimpanan mudah alih kecil seperti pemacu ibu jari amat mudah hilang - data pada peranti ini perlu disulitkan.