Rumah Keuangan Pribadi C ++ Programming: 10 Tip Anti-Hacker - dummies

C ++ Programming: 10 Tip Anti-Hacker - dummies

Daftar Isi:

Video: Hacking Livestream #8: RE tips 2024

Video: Hacking Livestream #8: RE tips 2024
Anonim

Sebagai programmer C ++, Anda perlu mempelajari hal-hal yang harus Anda lakukan di kode C ++ untuk menghindari penulisan program yang rentan terhadap peretasan. Ada juga yang menjelaskan fitur yang dapat Anda aktifkan jika sistem operasi Anda mendukungnya, seperti Address Space Layout Randomization (ASLR) dan Data Execution Prevention (DEP).

Jangan membuat asumsi tentang masukan pengguna

Visi terowongan programer tidak masalah selama tahap pengembangan awal. Namun, di beberapa titik, programmer (atau, lebih baik lagi, programmer lain yang tidak berhubungan dengan pengembangan kode) perlu duduk dan melupakan masalah segera. Dia perlu bertanya pada dirinya sendiri, "Bagaimana reaksi program ini terhadap masukan ilegal? "

Berikut adalah beberapa aturan untuk memeriksa masukan:

  • Jangan membuat asumsi tentang panjang masukan.

  • Jangan menerima masukan lebih banyak daripada yang Anda punyai untuk penyangga fixed-length (atau gunakan buffer ukuran variabel).

  • Periksa kisaran setiap nilai numerik untuk memastikannya masuk akal.

  • Periksa dan saring karakter khusus yang mungkin digunakan oleh hacker untuk menyuntikkan kode.

  • Jangan melewati input mentah ke layanan lain, seperti server database.

Dan lakukan semua pemeriksaan yang sama terhadap nilai yang dikembalikan dari layanan jarak jauh. Peretas mungkin tidak berada di sisi input, dia mungkin berada di sisi respon.

Menangani Kegagalan dengan Gracefully

Program Anda harus merespons kegagalan yang terjadi dalam program. Misalnya, jika panggilan Anda ke fungsi perpustakaan mengembalikan program nullptr, harus mendeteksi ini dan melakukan sesuatu yang masuk akal.

Wajar di sini harus dipahami dengan adil. Program tidak perlu mengendus sekitar untuk mencari tahu persis mengapa fungsinya tidak mengembalikan alamat yang masuk akal. Bisa jadi permintaan itu terlalu banyak mengingat masukan yang tidak masuk akal. Atau bisa juga konstruktor mendeteksi beberapa jenis input ilegal.

Tidak masalah. Intinya adalah bahwa program tersebut harus mengembalikan keadaannya sebaik mungkin dan menyiapkan bit input berikutnya tanpa menabrak atau merusak struktur data yang ada seperti heap.

Pertahankan Log Program

Buat dan pertahankan runtime log yang memungkinkan seseorang untuk merekonstruksi apa yang terjadi jika terjadi kegagalan keamanan. (Sebenarnya, ini sama nyatanya jika terjadi jenis kegagalan). Misalnya, Anda mungkin ingin masuk setiap kali ada orang masuk atau keluar dari sistem Anda.

Anda pasti ingin tahu siapa yang masuk ke sistem Anda saat terjadi peristiwa keamanan - inilah kelompok yang paling berisiko mengalami kerugian keamanan dan siapa yang paling curiga saat mencari penjahat.Selain itu, Anda pasti ingin mencatat kesalahan sistem apa pun yang mencakup sebagian besar pengecualian.

Program produksi dunia nyata berisi sejumlah besar panggilan yang terlihat seperti berikut:

log (DEBUG, "User% s memasukkan kata sandi hukum", sUser);

Ini hanyalah sebuah contoh. Setiap program membutuhkan beberapa jenis fungsi log. Entah itu benar-benar disebut log () tidak penting.

Ikuti proses perkembangan yang baik

Setiap program harus mengikuti proses pembangunan formal yang dipikirkan dengan baik. Proses ini setidaknya harus mencakup langkah-langkah berikut:

  • Mengumpulkan dan mendokumentasikan persyaratan, termasuk persyaratan keamanan.

  • Tinjau desainnya.

  • Mematuhi standar pengkodean.

  • Uji di bawah unit

  • Lakukan tes penerimaan formal yang didasarkan pada persyaratan awal.

Selain itu, tinjauan sejawat harus dilakukan pada poin-poin kunci untuk memastikan bahwa persyaratan, desain, kode, dan prosedur pengujian berkualitas tinggi dan sesuai dengan standar perusahaan.

Melaksanakan kontrol versi yang baik

Kontrol versi adalah hal yang aneh. Wajar jika tidak khawatir tentang versi 1. 1 saat Anda berada di bawah pistol untuk mendapatkan versi 1. 0 keluar dari pintu dan masuk ke tangan pengguna yang terulur. Namun, kontrol versi merupakan topik penting yang harus diatasi sejak dini karena harus dibangun ke dalam desain awal program dan tidak dilesat nantinya.

Salah satu aspek kontrol versi yang hampir sepele adalah mengetahui versi program yang digunakan pengguna. Saat pengguna menelepon dan berkata, "Lakukan ini saat saya mengekliknya," help desk benar-benar perlu mengetahui versi program yang digunakan pengguna. Dia bisa saja menggambarkan sebuah masalah dalam versinya yang sudah diperbaiki dalam versi saat ini.

Mengautentikasi pengguna dengan aman

Otentikasi pengguna harus mudah dilakukan: Pengguna memberikan nama akun dan kata sandi, dan program Anda menampilkan nama akun di tabel dan membandingkan kata sandinya. Jika kata kunci cocok, pengguna diautentikasi. Tapi ketika sampai pada antihacking, tidak sesederhana itu.

Pertama, jangan pernah menyimpan kata sandinya sendiri di database. Ini disebut menyimpannya dalam bentuk yang jelas dan dianggap sangat buruk. Terlalu mudah bagi hacker untuk mendapatkan file passwordnya. Sebagai gantinya, simpan sebuah transform aman dari kata sandi.

Mengelola sesi jarak jauh

Anda dapat membuat asumsi tertentu saat semua aplikasi Anda berjalan di satu komputer. Untuk satu hal, begitu pengguna mengotentikasi dirinya sendiri, Anda tidak perlu khawatir tentang dia berubah menjadi orang yang berbeda. Aplikasi yang berkomunikasi dengan server jauh tidak bisa membuat asumsi ini - hacker yang sedang mendengarkan di telepon bisa menunggu sampai pengguna mengotentikasi dirinya dan kemudian membajak sesi.

Apa yang dapat dilakukan programmer yang berpikiran keamanan untuk menghindari situasi ini? Anda tidak ingin berulang kali meminta user untuk kata sandinya hanya untuk memastikan koneksi belum dibajak. Solusi alternatifnya adalah membangun dan mengelola sesi . Anda melakukan ini dengan meminta server mengirim aplikasi remote cookie sesi setelah pengguna berhasil mengotentikasi dirinya sendiri.

Obfuscate your code

Code obfuscation adalah tindakan membuat executable sulit dipahami hacker.

Logikanya sederhana. Semakin mudah bagi seorang hacker untuk memahami bagaimana kode Anda bekerja, semakin mudah bagi si hacker untuk mengetahui kerentanannya.

Langkah termudah tunggal yang dapat Anda lakukan adalah memastikan bahwa Anda hanya mendistribusikan versi Release program Anda yang tidak menyertakan informasi simbol debug. Saat pertama kali membuat file proyek, pastikan untuk memilih bahwa Debug dan versi Release harus dibuat.

Jangan sekali-kali mendistribusikan versi aplikasi Anda dengan informasi simbol yang disertakan.

Tandatangani kode Anda dengan sertifikat digital

Penandatanganan kode bekerja dengan menghasilkan hash yang aman dari kode yang dapat dieksekusi dan menggabungkannya dengan sertifikat yang dikeluarkan oleh otoritas sertifikat yang valid. Prosesnya berjalan seperti ini: Perusahaan yang menciptakan program harus terlebih dahulu mendaftarkan diri dengan salah satu otoritas sertifikat.

Setelah otoritas sertifikat yakin bahwa Perusahaan saya adalah entitas perangkat lunak yang valid, itu akan menerbitkan sertifikat. Ini adalah nomor panjang yang dapat digunakan siapa pun untuk memverifikasi bahwa pemegang sertifikat ini adalah Perusahaan Nyata saya yang terkenal di San Antonio.

Gunakan enkripsi yang aman dimanapun diperlukan

Seperti peringatan bagus, peringatan ini memiliki beberapa bagian. Pertama, "Gunakan enkripsi dimanapun diperlukan. "Hal ini cenderung mengingatkan pikiran untuk mengkomunikasikan informasi rekening bank melalui Internet, namun Anda harus berpikir lebih umum dari itu.

Data yang dikomunikasikan, baik melalui Internet atau beberapa rentang yang lebih kecil, dikenal umumnya sebagai Data in Motion. Data in Motion harus dienkripsi kecuali tidak berguna bagi hacker.

Data yang tersimpan di disk dikenal sebagai Data saat Istirahat. Data ini juga harus dienkripsi jika ada kemungkinan disk hilang, dicuri, atau disalin. Bisnis secara rutin mengenkripsi hard disk di laptop perusahaan mereka jika ada laptop yang dicuri di pemindai keamanan di bandara atau ditinggalkan di taksi di suatu tempat.

Perangkat penyimpanan portabel kecil seperti thumb drive sangat rentan tersesat - data pada perangkat ini harus dienkripsi.

C ++ Programming: 10 Tip Anti-Hacker - dummies

Pilihan Editor

10 Outlook 2013 Jalan pintas layak diambil - dummies

10 Outlook 2013 Jalan pintas layak diambil - dummies

Meskipun komputer dan program perangkat lunak seperti Outlook 2013 seharusnya menyelamatkan Anda waktu, beberapa hari ini sepertinya tidak menjadi masalah. Tombol juggling, kunci, dan Pita sepertinya bisa memakan waktu seharian. Berikut adalah beberapa cara pintas yang bisa menghemat waktu dan ketegangan Anda.

Cara menambahkan kontak di Outlook 2013 - dummies

Cara menambahkan kontak di Outlook 2013 - dummies

Bila bukan apa yang Anda ketahui tapi siapa yang Anda kenal, Anda butuh alat yang bagus untuk mencatat siapa siapa. Outlook 2013 adalah alat yang hebat untuk mengelola nama dan alamat Anda, dan ini mudah digunakan sebagai Buku Hitam Kecil Anda.

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Anda dapat menyertakan gambar dengan kontak informasi yang Anda kumpulkan di Outlook 2013, dan tidak hanya untuk hiasan. Kini setelah banyak ponsel dan perangkat seluler lainnya melakukan sinkronisasi dengan daftar Kontak Outlook, Anda dapat membuat gambar seseorang muncul di layar ponsel Anda setiap kali dia menelepon atau mengirim SMS. Foto-foto itu ...

Pilihan Editor

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Ada di mana-mana, terutama di PSAT / NMSQT. Bukan kebetulan bahasa Inggris berisi begitu banyak rujukan ke lingkaran: lingkaran teman, air mengitari cerat, lingkaran penuh, dan sebagainya. Ketika Anda menekan lingkaran pertanyaan pada PSAT / NMSQT, ingat fakta-fakta ini: Jari-jari adalah garis lurus dari pusat lingkaran ...

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Uji Analogi Miller (Miller Analogies Test - MAT) adalah tes standar yang biasanya digunakan untuk penerimaan sekolah pascasarjana, jadi Anda sudah termotivasi untuk melakukannya dengan baik. Sebagai belajar untuk MAT menjadi sulit, memakan waktu, membosankan, atau hanya membosankan, akan sulit untuk mempertahankan motivasi Anda untuk melanjutkan pencarian Anda. Jadi, bagaimana Anda bisa meningkatkan level Anda saat ini?

Pilihan Editor

Bagaimana memberi nama file HTML - dummies

Bagaimana memberi nama file HTML - dummies

Anda tidak dapat membuka kode Anda di browser sampai Anda menyimpan itu dengan perpanjangan nama file. html (atau .htm). Ingat bahwa judul halaman ditampilkan di bilah judul browser atau bilah tab. Judul benar-benar bagaimana halaman Anda "diidentifikasi" ke seluruh dunia. Nama file halaman, meskipun, lebih merupakan bagian dalam ...

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Branding e-mail pemasaran Anda membantu audiens Anda untuk segera mengenali dan membedakan e-mail Anda dari e-mail asing yang mereka terima. Menjaga pencitraan e-mail Anda konsisten dari waktu ke waktu memungkinkan penerima Anda mengenal Anda dan e-mail karena mereka menerima beberapa e-mail dari Anda. Semua komunikasi bisnis Anda harus mengandung elemen pencitraan merek yang konsisten, dan ...