فرض تشفير الاتصالات بالكامل عبر بروتوكول HTTPS وحماية بيانات الزوار:
# إعادة توجيه كافة الزيارات إلى HTTPS تلقائياً
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
منع تشغيل السكربتات الخبيثة وحقن الأكواد الضارة (XSS) في المتصفح:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://trustedscripts.com;">
استخدام رموز تحقق أمان عشوائية (Tokens) لمنع تزوير الطلبات عبر المواقع الخارجية:
<input type="hidden" name="csrf_token" value="a9f8c7b6e5d43210...">
الاعتماد على الاستعلامات المُجهزة (Prepared Statements) بدلاً من دمج النصوص المباشرة:
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ?');
$stmt->execute([$userEmail]);
$user = $stmt->fetch();
فحص البيانات القادمة من المستخدمين وإزالة أي أكواد برمجية مشبوهة قبل معالجتها:
$cleanInput = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');
إلزام المتصفح بإرسال الكوكيز حصرياً عبر قنوات مشفرة ومنع الوصول إليها عبر JavaScript:
Set-Cookie: session_id=xyz123; Secure; HttpOnly; SameSite=Strict
منع عرض موقعك داخل إطارات (Iframes) في مواقع أخرى للحماية من هجمات Clickjacking:
header("X-Frame-Options: DENY");
إخفاء معلومات الإصدار الخاص بالخادم لتصعيب مهمة المخترقين في استهداف الثغرات:
# إخفاء تفاصيل السيرفر في ملف الإعدادات
ServerSignature Off
ServerTokens Prod
الاعتماد على خدمات حماية متقدمة مثل Cloudflare لصد هجمات الحرمان من الخدمة (DDoS):
// تفعيل وضع الأمان الشديد (Under Attack Mode) عند رصد حركة مرور ضارة
منع تصفح محتويات المجلدات والملفات البرمجية الفارغة أو الخاصة بالسكربتات:
# منع عرض محتويات المجلدات في خوادم أباتشي
Options -Indexes
تخزين كلمات المرور باستخدام خوارزميات تشفير لا رجعة فيها مثل Bcrypt أو Argon2:
$hashedPassword = password_hash($userPassword, PASSWORD_BCRYPT);
تحديد عدد محاولات تسجيل الدخول الفاشلة المؤقتة أو استخدام التحقق البشري (CAPTCHA):
// قفل الحساب مؤقتة أو تفعيل كود تحقق بعد 3 محاولات خاطئة متتالية
منع تشغيل أي ملفات برمجية (مثل PHP) يتم رفعها عبر مستخدمي الموقع في مجلد الصور:
<FilesMatch "\.(php|phtml|php3|sh)$">
Order Deny,Allow
Deny from all
</FilesMatch>
إجبار المتصفحات على فتح الموقع حصرياً عبر HTTPS دون السماح بالرجوع لـ HTTP:
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
تعطيل جلب واستدعاء الملفات الخارجية عبر متغيرات روابط الـ URL في السيرفر:
# إعدادات ملف php.ini للحماية
allow_url_fopen = Off
allow_url_include = Off
منع تعديل الملفات البرمجية الأساسية عبر منحها صلاحيات قراءة فقط (Permissions):
# ضبط صلاحيات الملفات الحساسة لتكون 644 والمجلدات 755
chmod 644 index.php
حفظ الأخطاء البرمجية في ملفات خلفية مخفية وعدم إظهارها للمستخدمين نهائياً:
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/secure/path/to/error.log');
أتمتة حفظ نسخ من قواعد البيانات والملفات وتخزينها في أماكن سحابية معزولة:
# سكربت دوري لضغط وحفظ قاعدة البيانات
mysqldump -u db_user -p db_name | gzip > /secure_backup/backup_$(date +%F).sql.gz
التأكد من أن الروابط المدخلة تتبع نطاقات موثوقة لمنع هجمات التوجيه الخبيث (Open Redirect):
function isValidRedirectUrl(string $url): bool {
$parsed = parse_url($url);
return isset($parsed['host']) && $parsed['host'] === 'mywebsite.com';
}
استخدام أدوات فحص الحماية البرمجية الآلية لاكتشاف الثغرات في الأكواد قبل استغلالها:
// فحص دوري عبر أدوات الـ Static Code Analysis ومكتبات الحماية المعتمدة
منع رفع الملفات الكبيرة أو الضارة عبر فحص امتداد وحجم الملف الفعلي:
$allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];
if (!in_array($_FILES['uploadedFile']['type'], $allowedTypes)) {
die("نوع الملف غير مسموح به نهائياً!");
}
إضافة طبقة أمان إضافية عبر تطبيق Google Authenticator لتسجيل الدخول الإداري:
// التحقق من رمز OTP المكون من 6 أرقام قبل السماح بدخول لوحة الإدارة
تحديد معدل الطلبات المسموح به لكل عنوان IP (Rate Limiting) لحماية السيرفر:
# حظر الـ IP المؤقت في حال تجاوز عدد محدد من الطلبات في الثانية
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
التحقق من عدم وجود حروف أسطر جديدة (\r\n) في البيانات المرسلة لرؤوس HTTP:
function cleanHeaderInput(string $data): string {
return str_replace(["\r", "\n"], '', $data);
}
حماية مسارات جلب البيانات عبر مفاتيح مصادقة مشفرة ومنع الوصول العشوائي:
$headers = getallheaders();
if (!isset($headers['Authorization']) || $headers['Authorization'] !== 'Bearer SECRET_API_KEY') {
http_response_code(401);
exit("غير مخول بالوصول!");
}
التأكد من فتح المنافذ الضرورية فقط (مثل 80 و 443 و 22) وإغلاق البقية نهائياً:
# فحص المنافذ المفتوحة وإعداد جدار الحماية (UFW)
sudo ufw allow 443/tcp
sudo ufw enable
مراقبة ما إذا تم تعديل أي ملف برمجي أساسي على السيرفر بشكل غير مبرر:
# مقارنة قيمة الـ Hash للملفات للتأكد من عدم اختراقها أو تعديلها
sha256sum core_script.php
تسجيل نطاق موقعك ضمن القوائم العالمية للمتصفحات لفرض الحماية المشفرة دائماً:
// تضمين الموقع رسمياً في قائمة HSTS Preload الخاصة بالمتصفحات الكبرى
عرض صفحات خطأ عامة وموحدة (مثل Error 404 أو 500) وعدم كشف تفاصيل لغة البرمجة:
ErrorDocument 404 /custom-404.html
ErrorDocument 500 /custom-500.html
الرصد الدائم وتحديث إصدارات اللغات، الحزم البرمجية، والسيرفر لسد الثغرات المكتشفة:
# تحديث حزم النظام والأمان بانتظام
sudo apt update && sudo apt upgrade -y