BELAJAR PHP

untuk pemula sekali

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".

$sql = 'SELECT * FROM angket_table WHERE code=?';
$data[] = $code;
$stmt -> execute($data);
arti ini adalah...
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);

setelah perbaiki ini, silahkan anada konfirmasi di browser.
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...

$sql = 'SELECT * FROM angket_table WHERE code=? AND opini=?';
$stmt = $dbh -> prepare($sql);
$data[] = $code;
$data[] = $opini;
$stmt->execute($data);
di kalimat SQL "SELECT..." ada 2 "?".
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 = $_POST['code'];
$code = htmlspecialchars($code);
$code = mysql_real_escape_string($code);
1. terima data dari POST (dari paginal lalu)
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...