زبان PHP همچنان محبوبترین زبان سمت سرور است و بیش از ۷۰٪ وبسایتهای دنیا (از جمله وردپرس) با آن کار میکنند. اما سهولت استفاده از PHP گاهی باعث کدنویسی غیرایمن میشود. بیایید ۵ حفره امنیتی رایج و روش بستن آنها را مرور کنیم.

۱. تزریق SQL (SQL Injection)
هرگز ورودی کاربر را مستقیماً در کوئری SQL قرار ندهید. این کار به هکر اجازه میدهد دیتابیس شما را تخلیه یا حذف کند. همیشه از Prepared Statements در PDO استفاده کنید:
// روش غلط (خطرناک)
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];
// روش صحیح (ایمن)
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $_GET['id']]);۲. حملات XSS (Cross-Site Scripting)
اگر کاربری بتواند کد جاوااسکریپت در سایت شما تزریق کند، میتواند کوکیهای سایر کاربران را سرقت کند. هر دیتایی که میخواهید چاپ کنید باید فیلتر شود:
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');۳. جلوگیری از حملات CSRF
در تمام فرمهای حساس (مثل تغییر رمز عبور یا انتقال وجه) باید از CSRF Token استفاده کنید. این توکن یک کد یکبار مصرف است که تضمین میکند درخواست واقعاً از سمت سایت شما ارسال شده است، نه از یک لینک مخرب در ایمیل.
۴. تنظیمات php.ini
در سرور پروداکشن، حتماً مقادیر زیر را تنظیم کنید:
- display_errors = Off
- expose_php = Off
- allow_url_fopen = Off