Masih terdapat beberapa kesalahan yang sering dilakukan oleh programer selain yang telah dijelaskan pada postingan sebelumnya, yaitu:
SQL Injection
SQL injection berarti memanipulasi suatu query atau memasukan suatu query dengan menggunakan query lain. Cara ini dapat dilakukan karena pada program yang dibuat terdapat query yang menggunakan varibel. Sebagai contoh:
$query = "SELECT * FROM users WHERE username='$user' AND password='$pass'
Script diatas digunakan untuk melakukan pengecekan ketika user ingin login. Kondisi akan bernilai benar jika username dan password terdapat pada database. Namun dengan memberikan nilai variabel $user dan $pass dari GET/POST dengan nilai admin" OR 1=1 ## maka query tersebut akan menjadi:
$query = "SELECT * FROM users WHERE username='admin' OR 1=1 ## AND password='$pass'
Kondisi tersebut akan menjadikan query bernilai true atau benar sehingga attacker dapat mengakses halaman admin tanpa mengetahui username dan password tersebut.
Mengenai sql injection melalui form login dan cara pengamananya baca postingan sebelumnya dengan judul "SQL Injection Melalui Form Login".
Session Spoofing
Session pada PHP tidak dilakukan dengan cara yang cukup aman. Ketika session dibentuk pada saat user login, maka sebuah file untuk menyimpan data variabel session dibuat dan akan tetap ada sebelum session di-destroy. File session tersebut disimpan pada direktori yang didefinisikan pada php.ini sebagai session.save_path. Pada UNIX biasanya direktorinya adalah /temp/, sedangkan pada Windows adalah sessiondata pada direktori di mana PHP diinstal.
Seorang attacker yang cukup memiliki kemampuan untuk menyimpan file PHP sehingga file dapat diakses lewat URL dapat membuat sebuah program PHP yang melihat semua session file yang ada kemudian melihat isinya. Sebuah session dapat berisi informasi-informasi yang krusial seperti username, password, dan lain-lain sehingga attacker dapat mengambil informasi tersebut atau paling tidak jika sistem pengecekan untuk otentifikasi tidak terlalu rumit, misalnya tanpa pengecekan IP host dari client maka attacker dapat men-take over session tersebut dengan session ID. Atau bisa saja jika attacker tahu apa yang harus diisi pada file tersebut maka dia dapat membuat session-nya sendiri.
Untuk mengatasi masalah tersebut kita dapat mengubah direktori tempat menyimpan file session tersebut melalui konfigurasi php.ini atau dengan fungsi session_save_path() pada kode PHP Anda. Kemudian, buatlah agar direktori tersebut hanya memiliki hak akses execute dan writable oleh user yang menjalankan web server. Sebagai contoh pada sistem Unix untuk mengubah hak akses
mkdir /temp/sessiondir/
chmod 300 /temp/sessiondir/