Video: Passwords & hash functions (Simply Explained) 2024
Aturan pertama untuk menghindari kode menyuntikkan ke dalam program C ++ tidak pernah, pernah, memungkinkan masukan pengguna diproses oleh penerjemah bahasa tujuan umum. Kesalahan umum dengan injeksi SQL adalah bahwa program menerima masukan pengguna seolah-olah selalu dapat diterima dan memasukkannya ke dalam kueri SQL sehingga kemudian dikirim ke mesin basis data untuk diproses.
Sebagai contoh, sebuah program yang meminta masukan pengguna pada suatu tanggal dapat diretas. Pendekatan yang paling aman dan paling user-friendly adalah memberikan grafik kalender kepada pengguna agar dapat memilih tanggal mulai dan akhir. Program kemudian akan membuat tanggal berdasarkan pada apa yang diklik pengguna.
Jika ini tidak mungkin, maka program harus memeriksa dengan saksama masukan untuk memastikan bahwa input dalam format yang tepat untuk sebuah tanggal, dalam kasus ini yyyy / mm / dd < - dengan kata lain, empat digit diikuti oleh garis miring diikuti dua digit dan garis miring dan akhirnya dua digit lagi. Tidak ada lagi yang harus dianggap sebagai masukan yang dapat diterima. Kadang-kadang Anda tidak bisa begitu spesifik tentang formatnya. Jika Anda harus mengizinkan pengguna untuk memasukkan teks fleksibel, maka setidaknya Anda dapat menghindari karakter khusus. Sebagai contoh, itu cukup banyak tidak mungkin untuk melakukan injeksi kode SQL tanpa menggunakan kutipan tunggal atau ganda.
// periksa beberapa string 'untuk memastikannya lurus dengan ukuran ASCII = off. find_first_not_of ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_"); if (off! = string:: npos) {cerr << "errorn";}
Kode ini mencari string
s untuk karakter yang bukan salah satu karakter A sampai Z, a sampai z, 0 sampai 9, atau garis bawah. Jika menemukan karakter seperti itu, maka program tersebut menolak masukan.