Banyak orang mengira bahwa aplikasi web berbasis PHP native itu kurang aman dibanding framework besar seperti Laravel atau CodeIgniter.
Padahal faktanya, PHP native tetap bisa dibuat sangat aman, sama kuatnya seperti framework — asal Anda menerapkan teknik keamanan yang benar.
Buktinya, banyak rumah sakit, klinik, sekolah, dan kantor pemerintahan tetap menggunakan PHP native, tetapi tingkat keamanannya tinggi karena mengikuti standar keamanan ketat.
Berikut adalah 13 teknik terpenting untuk meningkatkan keamanan aplikasi PHP Native Anda, mulai dari yang paling mudah hingga paling kuat.
• Belajar Coding Bagian 3: Anatomi HTML dan Atribut HTML
• Langkah Mudah Membuat Database Pertama Kali di MySQL (Cocok untuk Pemula)
🟩 1. Gunakan Prepared Statement (Anti SQL Injection)
INI adalah teknik nomor 1 yang WAJIB diterapkan.
Jangan pernah menyisipkan data POST langsung ke dalam query:
$sql = "INSERT INTO users VALUES ('$_POST[user]')";
Cara aman:
$stmt = $koneksi->prepare("INSERT INTO users (nama) VALUES (?)"); $stmt->bind_param("s", $nama); $stmt->execute();
✔ Sangat aman
✔ 100% anti SQL injection
✔ Wajib untuk aplikasi sensitif seperti Portal PPI Rumah Sakit
🟦 2. Gunakan password_hash() dan password_verify()
Jangan pernah menyimpan password dalam bentuk biasa (plain text).
Contoh salah:
$password_db = $_POST['password'];
Contoh benar:
$hash = password_hash($password, PASSWORD_DEFAULT);
Saat login, gunakan:
password_verify($password_input, $password_hash_db);
🟨 3. Selalu Validasi Input
Setiap data dari:
- Form login
- Form input data
- Upload dokumen
- GET parameter
- Fetch API
harus divalidasi terlebih dahulu.
Contoh:
$judul = htmlspecialchars(trim($_POST['judul']));
🟧 4. Tambahkan CSRF Token pada Form
CSRF Token mencegah form dipalsukan dari luar website Anda.
HTML:
Backend:
if ($_POST['token'] !== $_SESSION['token']) { die("Invalid token!"); }
🟥 5. Gunakan Session Keamanan (httpOnly + Regenerate ID)
Wajib saat pengguna login:
session_start(); session_regenerate_id(true); $_SESSION['user'] = $username;
Perkuat lagi:
ini_set('session.cookie_httponly', 1);
Mencegah pencurian session oleh hacker.
🟪 6. Batasi Akses ke Backend (Authorization)
Setiap file backend harus punya:
include "../../includes/auth_check.php";
Isi file auth_check.php:
session_start(); if (!isset($_SESSION['user'])) { header("Location: /login.php"); exit; }
🟫 7. Amankan Upload File (Wajib untuk Dokumen RS)
Untuk upload wajib dicek:
- Tipe file
- Ukuran file
- Nama file
- Lokasi penyimpanan
Contoh:
$allowed = ['pdf', 'jpg', 'png']; $ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); if(!in_array($ext, $allowed)) { die("File tidak diizinkan!"); }
🟩 8. Nonaktifkan Error Output di Mode Production
Ini sangat penting agar struktur folder tidak bocor ke publik.
ini_set('display_errors', 0);
🟦 9. Sanitasi Output (Anti XSS)
Setiap data yang ditampilkan ke halaman harus disaring:
echo htmlspecialchars($judul);
Mencegah script jahat tampil di browser.
🟨 10. Pisahkan Backend dan Frontend
Struktur seperti ini sangat dianjurkan:
/frontend /backend /config
Tujuannya untuk mencegah orang mengakses file proses secara langsung serta memudahkan pengelolaan aplikasi.
🟧 11. Gunakan .htaccess untuk Mengunci Folder Backend
Buat file .htaccess di dalam folder /backend:
Options -Indexes
Ini mencegah pengguna melihat isi folder backend Anda.
🟥 12. Batasi Ukuran Request
Setting di PHP.ini:
post_max_size = 10M upload_max_filesize = 10M
Mencegah serangan DoS melalui upload besar.
🟪 13. Gunakan HTTPS
Aktifkan SSL (biasanya gratis via Let’s Encrypt).
Keuntungan:
- Data terenkripsi
- Login lebih aman
- Cookie lebih terlindungi
⭐ RINGKASAN UTAMA
PHP Native bisa sangat aman, bahkan setara framework, jika Anda menerapkan:
✔ Prepared statements
✔ CSRF token
✔ Session keamanan
✔ Validasi input
✔ XSS filter
✔ Upload file aman
✔ Struktur folder rapi
Framework hanya mempermudah — tapi inti keamanannya bisa Anda terapkan secara manual di PHP native.