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

PHP、Nginx、Apache 禁止頁面被 iframe 嵌入的統一方案(X-Frame-Options)

     編輯:PHP 相關知識

HTTP 響應頭:X-Frame-Options

三種指令值:

  • DENY:完全禁止嵌入
  • SAMEORIGIN:僅允許同源域名嵌入
  • ALLOW-FROM uri:允許指定來源(現代瀏覽器已棄用,推薦 CSP frame-ancestors)

各環境配置示例

PHP(應用層,通用)

<?php
header('X-Frame-Options: DENY'); // 或 SAMEORIGIN
?>

Nginx(配置層,高性能)

# 全站
add_header X-Frame-Options SAMEORIGIN;

# 特定 location
location / {
    add_header X-Frame-Options SAMEORIGIN;
}

Apache(需 mod_headers 模塊)

Header always append X-Frame-Options SAMEORIGIN

現代最佳實踐:Content-Security-Policy

X-Frame-Options 逐漸被 CSP: frame-ancestors 取代,支持更靈活的策略:

# PHP
header("Content-Security-Policy: frame-ancestors 'self' https://trusted.com;");

# Nginx
add_header Content-Security-Policy "frame-ancestors 'self' https://trusted.com;";

# Apache
Header always set Content-Security-Policy "frame-ancestors 'self' https://trusted.com;"

驗證與測試

  • 瀏覽器開發者工具 → Network → 查看響應頭
  • 在線測試:MDN 文檔
  • 被阻攔時頁面顯示空白或瀏覽器報錯:Refused to display in a frame because X-Frame-Options

總結建議

  1. 新項目優先用 CSP frame-ancestors
  2. 舊項目快速加固用 X-Frame-Options: SAMEORIGIN
  3. Nginx/Apache 層配置性能優於 PHP 代碼層
  4. 嚴禁使用 ALLOW-FROM(主流瀏覽器已不支持)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved