تست محافظت از تزریق کد

تنظیمات .htaccess

برای محافظت از تزریق کدهای مخرب و هدایت آن‌ها به صفحه اخطار، تنظیمات زیر را در فایل .htaccess سایت خود اعمال کنید:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # بلاک کردن تلاش‌های تزریق اسکریپت
    RewriteCond %{QUERY_STRING} (\<|\%3C).*script.*(\>|\%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

    # هدایت به صفحه اخطار
    RewriteRule ^(.*)$ https://www.miralishahidi.ir/warning.php [F,L]
</IfModule>

صفحه اخطار (warning.php)

صفحه‌ای که کاربران به هنگام تلاش برای تزریق کدهای مخرب هدایت می‌شوند، باید به شکل زیر طراحی شود:

<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>هشدار امنیتی</title>
    <style>
        body {
            font-family: 'Arial', sans-serif;
            background-color: #f8d7da;
            color: #721c24;
            text-align: center;
            padding: 50px;
        }
        .container {
            background-color: #f5c6cb;
            border: 1px solid #f5c6cb;
            border-radius: 8px;
            padding: 20px;
            display: inline-block;
            box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);
        }
        h1 {
            font-size: 24px;
        }
        p {
            font-size: 18px;
        }
        a {
            display: inline-block;
            margin-top: 20px;
            padding: 10px 20px;
            background-color: #d4edda;
            color: #155724;
            text-decoration: none;
            border-radius: 5px;
        }
        a:hover {
            background-color: #c3e6cb;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>هشدار امنیتی</h1>
        <p>به نظر می‌رسد که شما در تلاش برای اجرای اسکریپت‌های مخرب هستید.</p>
        <p>این فعالیت مسدود شده است. لطفاً از ارسال درخواست‌های غیرمجاز خودداری کنید.</p>
        <a href="index.php">بازگشت به صفحه اصلی</a>
    </div>
</body>
</html>

کدهای تست تزریق

برای اطمینان از عملکرد صحیح تنظیمات، از کدهای تست زیر استفاده کنید:

تست‌های پنتست با curl و POST

نحوه استفاده از پنتست با `curl` و تست‌های GET

برای انجام تست‌های پنتست تزریق با استفاده از `curl`، می‌توانید از دستورات زیر استفاده کنید:

1. **تزریق XSS (تزریق اسکریپت)**

curl "https://www.miralishahidi.ir/index.php?name=%3Cscript%3Ealert('XSS')%3C%2Fscript%3E"

2. **تزریق XSS (تصویر)**

curl "https://www.miralishahidi.ir/index.php?name=%3Cimg%20src=%22javascript:alert('XSS')%22%3E"

3. **تزریق SQL (Globals)**

curl "https://www.miralishahidi.ir/index.php?GLOBALS[foo]=bar"

4. **تزریق XSS با استفاده از پارامتر `_REQUEST`**

curl "https://www.miralishahidi.ir/index.php?_REQUEST%5Bfoo%5D=%3Cimg%20src=%22javascript:alert('XSS')%22%3E"

5. **تزریق XSS با استفاده از `<script>`**

curl "https://www.miralishahidi.ir/index.php?name=<script>alert(document.cookie)</script>&otherparam=value"

6. **تزریق XSS (Globals و SQL Injection)**

curl "https://www.miralishahidi.ir/index.php?GLOBALS%5Bfoo%5D=%3Cscript%3Ealert('XSS')%3C%2Fscript%3E"

7. **تزریق XSS (تست پیچیده‌تر با `svg`)**

curl "https://www.miralishahidi.ir/index.php?name=%3Csvg%20onload=alert('XSS')%3E"

8. **تزریق XSS (تست پیچیده‌تر با `iframe`)**

curl "https://www.miralishahidi.ir/index.php?name=%3Ciframe%20src=%22javascript:alert('XSS')%22%3E"

9. **تزریق XSS (تست پیچیده‌تر با `object`)**

curl "https://www.miralishahidi.ir/index.php?name=%3Cobject%20data=%22javascript:alert('XSS')%22%3E"

10. **تزریق XSS (eval)**

curl "https://www.miralishahidi.ir/index.php?name=%3Cscript%3Eeval(String.fromCharCode(88,83,83))%3C%2Fscript%3E"

11. **تزریق XSS (تست پیچیده‌تر با تابع)**

curl "https://www.miralishahidi.ir/index.php?name=%3Cscript%3Efunction%20test()%20%7B%20alert('XSS')%20%7D%3C%2Fscript%3E"

برای تست موفقیت‌آمیز، توجه داشته باشید:

تست با استفاده از GET و POST

در اینجا یک نمونه برای تست POST آورده شده است (باید با ابزارهایی مانند Burp Suite یا Postman آزمایش شود):

POST /index.php HTTP/1.1
Host: www.miralishahidi.ir
Content-Type: application/x-www-form-urlencoded

name=<script>alert('XSS')</script>&GLOBALS[foo]=bar

نکته: