الأمن السيبراني للمواقع أصبح من أهم الأولويات لكل صاحب موقع أو مطور. الهجمات الشائعة مثل SQL Injection, XSS, CSRF يمكن أن تدمر موقعك أو سرقة بيانات العملاء.
في هذا المقال، سنغطي أسرار وتقنيات حماية المواقع مع أكواد عملية كثيرة جدًا لتطبيقها مباشرة على أي موقع.
1️⃣ حماية ملفات PHP
منع الوصول المباشر للملفات
<?php
// حماية ملفات config.php أو أي ملف حساس
if (basename($_SERVER['PHP_SELF']) == basename(__FILE__)) {
header("HTTP/1.0 403 Forbidden");
exit("Access denied.");
}
?>
تعطيل عرض الأخطاء على الموقع الحي
<?php
ini_set('display_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/path/to/error.log');
?>
منع استدعاء الملفات خارج السيرفر
<?php
$allowed_dir = __DIR__;
$requested_file = realpath($_GET['file']);
if(strpos($requested_file, $allowed_dir) !== 0){
die("Access denied.");
}
include($requested_file);
?>
2️⃣ حماية قاعدة البيانات
استخدام Prepared Statements لتجنب SQL Injection
<?php
$conn = new mysqli($host, $user, $pass, $db);
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$email = $_POST['email'];
$stmt->execute();
$result = $stmt->get_result();
?>
فحص المدخلات
<?php
function sanitize($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
return $data;
}$username = sanitize($_POST['username']);
$password = sanitize($_POST['password']);
?>
3️⃣ حماية ملفات .htaccess
منع الوصول إلى ملفات حساسة
<FilesMatch "^(wp-config.php|.htaccess|config.php)$">
Order Allow,Deny
Deny from all
</FilesMatch>
منع عرض الدليل
Options -Indexes
تقييد IP للوصول إلى لوحة التحكم
<Files wp-login.php>
order deny,allow
deny from all
allow from 192.168.1.100
</Files>
4️⃣ حماية الجافاسكريبت – منع XSS
ترميز مخرجات HTML
function escapeHTML(str){
var div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}// استخدام:
var safe = escapeHTML(userInput);
document.getElementById('output').innerHTML = safe;
منع إدخال أكواد في الحقول
document.getElementById('form').addEventListener('submit', function(e){
var input = document.getElementById('username').value;
if(/<|>/.test(input)){
alert("Invalid characters detected!");
e.preventDefault();
}
});
5️⃣ حماية من CSRF
<?php
// توليد التوكن
session_start();
if(empty($_SESSION['csrf_token'])){
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?><form method="POST" action="process.php">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<input type="text" name="username">
<input type="submit" value="Submit">
</form>
التحقق من التوكن عند الاستلام
<?php
session_start();
if($_POST['csrf_token'] !== $_SESSION['csrf_token']){
die("CSRF token mismatch!");
}
?>
6️⃣ حماية الصور والملفات
منع الوصول المباشر للملفات الحساسة
<FilesMatch "\.(php|config|sql|env)$">
Order Allow,Deny
Deny from all
</FilesMatch>
منع Hotlinking للصور
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
7️⃣ حماية API و AJAX
التحقق من مصدر الطلب
<?php
$allowed_origin = "https://example.com";
if($_SERVER['HTTP_ORIGIN'] !== $allowed_origin){
header("HTTP/1.0 403 Forbidden");
exit("Access denied.");
}
?>
Rate Limiting – الحد من عدد الطلبات
<?php
session_start();
if(!isset($_SESSION['requests'])){
$_SESSION['requests'] = 1;
$_SESSION['time'] = time();
}else{
if(time() - $_SESSION['time'] < 60){
$_SESSION['requests']++;
if($_SESSION['requests'] > 30){
die("Too many requests!");
}
}else{
$_SESSION['requests'] = 1;
$_SESSION['time'] = time();
}
}
?>
8️⃣ حماية كلمات المرور
Force Strong Passwords – PHP
<?php
function validatePassword($password){
if(strlen($password) < 8) return false;
if(!preg_match('/[A-Z]/', $password)) return false;
if(!preg_match('/[a-z]/', $password)) return false;
if(!preg_match('/[0-9]/', $password)) return false;
if(!preg_match('/[\W]/', $password)) return false;
return true;
}
?>
Hash Passwords – استخدام BCRYPT
<?php
$hashed = password_hash($password, PASSWORD_BCRYPT);
if(password_verify($password_input, $hashed)){
echo "Password correct!";
}
?>
9️⃣ حماية Headers – منع الهجمات الشائعة
<?php
header("X-Frame-Options: SAMEORIGIN");
header("X-XSS-Protection: 1; mode=block");
header("X-Content-Type-Options: nosniff");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains");
?>
10️⃣ دمج كل الحماية في موقع واحد
يمكنك دمج كل الأكواد السابقة في ملفات config.php، functions.php، .htaccess بحيث يصبح موقعك محمي تقريبًا من جميع الهجمات الشائعة:
- SQL Injection
- XSS & CSRF
- Hotlinking & File Access
- Brute Force & Rate Limiting
- Headers & HTTPS Enforcement
💡 نصيحة سرية جدًا:
- لا تعتمد على طريقة واحدة فقط للحماية، استخدم طبقات متعددة.
- اختبر موقعك دوريًا باستخدام أدوات مثل:
- OWASP ZAP
- Acunetix
- Sucuri SiteCheck