首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 反掃描器技巧:偽造 404 誤導自動化工具

     編輯:PHP 綜合知識

原理

大多數 Web 掃描器(目錄掃描、後台尋找、漏洞探測)依賴 HTTP 狀態碼 200 OK 判斷資源存在。在權限驗證失敗時主動返回 404 Not Found,可讓掃描器誤以為頁面不存在,從而跳過後續掃描。

實現代碼

<?php
// 必須在任何輸出前調用
ob_start();

if (($_GET['password'] ?? '') !== 'StrongSecret123') {
    // 偽造 404,欺騙掃描器
    header("HTTP/1.1 404 Not Found");
    // 可選:輸出友好 404 頁面
    include '404.html';
    ob_end_flush();
    exit;
}

// 正常業務邏輯
?>
<!DOCTYPE html>
<html><head><title>Secret Panel</title></head>
<body>...</body></html>
<?php ob_end_flush(); ?>

進階:隨機化狀態碼與延遲

<?php
function deceiveScanner(): void {
    $codes = [404, 403, 500, 503];
    $code  = $codes[array_rand($codes)];
    header("HTTP/1.1 {$code} " . [404=>'Not Found',403=>'Forbidden',500=>'Internal Server Error',503=>'Service Unavailable'][$code]);
    // 隨機延遲 100-500ms 增加掃描成本
    usleep(mt_rand(100_000, 500_000));
    exit;
}

局限性與防禦深度

  • 僅對自動化掃描器有效,人工測試仍可分析響應內容、長度、Header 差異識破。
  • 需結合:WAF、IP 限流、雙因子認證、目錄亂名、禁用目錄列表、定期滲透測試。
  • 正規業務介面(API、前台頁面)不建議濫用,以免影響 SEO 與監控告警。

合規提醒

故意返回錯誤狀態碼可能違反 HTTP 語義,建議僅在管理後台、內部介面、蜜罐頁面使用,公開頁面應誠實返回 403/401 並配合友好提示。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved