BELAJAR PHP 4-10.membela dari hal yang jahat
kalau anda membuat situs dan upload ke server benar,
semua orang di dunia bisa melihat situs anda.
kadang-kadang ada orang yang tidak sama dengan apa yang kita fikirkan,dan mereka mungkin ingin melakukan tidak benar terhadap situs kita,
dan seperti itu banyak ya di dunia ini.
dan kita bisa menjaga situs kita dengan menggunakan "security".
jadi anda harus tahu tentang "security".
mencoba melakukan hal yang tidak benar dari diri sendiri
untuk tahu hal yang tidak benar atau jahat, kita coba buat jahat ke situs angket dari sendiri.
silahkan mengisi "2 or 1" di "cari.html" seperti dibawah.
hasil nya...
bagaimana?
hasilnya bukan code=2 saja tapi semua (code 1 sampai 5).
kalau mengisi "2 or 1", kalimat SQL di "cari.php" nya
"SELECT * FROM anget_table WHERE code=2 or 1"
jadi arti ini adalah...
"minta tolong kasih data dari database,
data nya code adalah 2
atau
data nya semua"
kalau di dunia computer (bukan database saja), arti "1" nya "semua" atau "YES".
jadi kalau disini, "data semua".
hal jahat ini, namanya "SQL INJECTION".
kasih instruksi ke database pakai mengisi di textbox.
kalau cara ini, bisa ambil data semua oleh orang jahat,
atau bisa menulis kembali data pun.
cara untuk menghindari atau menghadang dari "SQL INJECTION"
cara menghadangnya dari "SQL INJECTION" nya pasti ada.
untuk ke depannya, waktu anda pakai database, anda harus pakai cara ini.
nama cara ini adalah "PrepareStatement".
$data[] = $code;
$stmt -> execute($data);
1. tidak pakai "." untuk gandeng kalimat SLQ dan variable
2. pakai "?" untuk variable
3. data masuk ke variable lain
4. waktu kasih instruksi ke database, pakai variable baru
jadi kita perbaiki "cari.php" seperti dibawah.
$sql = 'SELECT * FROM angket_table WHERE code=?';
$stmt = $dbh -> prepare($sql);
$data[] = $code;
$stmt->execute($data);
kalau mengisi "2 or 1" di "cari.html"
hasil nya data yang code adalah 2 saja keluar.
cara pakai beberapa variable di kalimat SQL
nanti pasti ada "mau pakai beberapa variable" di kalimat SQL.
caranya...
$stmt = $dbh -> prepare($sql);
$data[] = $code;
$data[] = $opini;
$stmt->execute($data);
untuk "?" ke 1 "$data[] = $code;"
untuk "?" ke 2 "$data[] = $opini;"
ini saja sudah cukup.
"sanitize" untuk mysql
kita sudah belajar "sanitize" untuk tag HTML di 3-16.
ada script php "sanitize" untuk mysql juga.
$code = htmlspecialchars($code);
$code = mysql_real_escape_string($code);
2. sanitize untuk tag HTML
3. sanitize untuk mysql
contoh nya, kalau ada ' di huruf seperti "I'm ali."
database tidak mengerti ' itu untuk script atau tidak.
untuk security
bisa membuat beberapa buku untuk belajar security.
dan cara nya setiap hari tambah tambah.
kalau anda memperlakukan informasi pribadi, itu sangat penting.
silahkan anda belajar pakai internet atau buk dll...