دریافت ورودیهای کاربر با متدهای GET و POST، ایمنسازی ورودیها و اعتبارسنجی دادهها پیش از پردازش.
فرمهای HTML پل ارتباطی کاربران با برنامههای وب هستند. PHP با متغیرهای ابرعمومی (Superglobals) مانند $_GET و $_POST دادههای ارسالی کاربر را دریافت میکند. پردازش صحیح و پاکسازی ورودیها کلید امنیت وبسایت در برابر حملات XSS و SQL Injection است.
متد **GET** پارامترها را در آدرس بار (URL) نمایش میدهد و مناسب جستجو است، اما متد **POST** دادهها را درون بدنه درخواست HTTP ارسال کرده و برای اطلاعات حساس (مانند رمزعبور) و فرمهای ثبتنام ضروری است.
<?php
// Check if form was submitted via POST
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// 1. Sanitize string input to prevent XSS
$username = htmlspecialchars(trim($_POST['username'] ?? ''));
// 2. Validate email using filter_var()
$email = filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL);
if (!$email) {
echo "Invalid email address!";
} else {
echo "Welcome, " . $username;
}
}
?>
پاکسازی (Sanitization): حذف کاراکترهای غیرمجاز یا خطرناک از ورودیها (مثلاً تبدیل کدهای HTML به متن ساده با htmlspecialchars()).
اعتبارسنجی (Validation): بررسی اینکه داده با فرمت انتظاری مطابقت دارد یا خیر (مثلاً اطمینان از ایمیل بودن یک متغیر با filter_var()).
| ویژگی | GET | POST |
|---|---|---|
| محل ارسال داده | نمایش در URL | بدنه درخواست (Request Body) |
| امنیت | پایین (مناسب اطلاعات حساس نیست) | بالاتر (دادهها مخفی در URL) |
| محدودیت حجم | حدود ۲۰۰۰ کاراکتر | بدون محدودیت واقعی (قابلیت تنظیم) |
چاپ مستقیم ورودیهای کاربر (آسیبپذیری XSS)
چاپ مستقیم $_POST['name'] بدون خروج امن (htmlspecialchars()) امکان تزریق اسکریپتهای مخرب جاوااسکریپت به صفحه را فراهم میسازد.
عدم بررسی وجود کلید قبل از دسترسی
دسترسی مستقیم به کلیدهایی که ممکن است ارسال نشده باشند باعث بروز خطای Undefined key میشود. همواره از عملگر Null Coalescing (??) یا isset() استفاده کنید.
یک فرم تماس ساده HTML با فیلدهای ایمیل و پیام ایجاد کنید. اسکریپت PHP پردازشکننده باید بررسی کند که اگر درخواست از نوع POST بود، ایمیل را با filter_var() اعتبارسنجی کند و متن پیام را به روش امن پاکسازی نماید.