提高安全性而在HTTP響應頭中可以使用的各種響應頭字段


本文介紹在Web服務器做出響應時,為了提高安全性而在HTTP響應頭中可以使用的各種響應頭字段。由於部分瀏覽器中有可能對某些字段或選項不提供支持,所以在使用這些字段時請先確認客戶端環境。

X-Frame-Options

該響應頭中用於控制是否在瀏覽器中顯示frame或iframe中指定的頁面,主要用來防止Clickjacking(點擊劫持)攻擊。

X-Frame-Options: SAMEORIGIN
  • DENY 禁止顯示frame內的頁面(即使是同一網站內的頁面)
  • SAMEORIGIN 允許在frame內顯示來自同一網站的頁面,禁止顯示來自其他網站的頁面
  • ALLOW-FROM origin_uri允許在frame內顯示來自指定uri的頁面(當允許顯示來自於指定網站的頁面時使用)

X-Content-Type-Options

如果從script或stylesheet讀入的文件的MIME類型與指定MIME類型不匹配,不允許讀取該文件。用於防止XSS等跨站腳本攻擊。

X-Frame-Options: nosniff

X-XSS-Protection

用於啟用瀏覽器的XSS過濾功能,以防止XSS跨站腳本攻擊。

X-XSS-Protection: 1; mode=block
  • 禁用XSS過濾功能
  • 啟用XSS過濾功能

Content-Security-Policy

用於控制當外部資源不可信賴時不被讀取。用於防止XSS跨站腳本攻擊或數據注入攻擊(但是,如果設定不當,則網站中的部分腳本代碼有可能失效)。

之前的字段名為X-Content-Security-Policy

Content-Security-Policy: default-src 'self'
  • default-src 'self' 允許讀取來自於同源(域名+主機+端口號)的所有內容
  • default-src 'self' *.example.com允許讀取來自於指定域名及其所有子域名的所有內容

X-Permitted-Cross-Domain-Policies

用於指定當不能將“crossdomain.xml”文件(當需要從別的域名中的某個文件中讀取Flash內容時用於進行必要設置的策略文件)放置在網站根目錄等場合時采取的替代策略。

X-Permitted-Cross-Domain-Policies: master-only
  • master-only 只允許使用主策略文件(/crossdomain.xml)

Strict-Transport-Security

用於通知瀏覽器只能使用HTTPS協議訪問網站。用於將HTTP網站重定向到HTTPS網站。

Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age 用於修改STS的默認有效時間。
  • includeSubDomains 用於指定所有子域名同樣使用該策略。

Access-Control-Allow-Origin等CORS相關字段

當使用XMLHttpRequest從其他域名中獲取資源進行跨域通信時使用。

Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-TRICORDER
Access-Control-Max-Age: 1728000

上述代碼用於設定與“http://www.example.com”進行跨域通信處理,允許使用POST, GET, OPTIONS方法,在發送的請求頭中添加X-TRICORDER字段,通信超時時間為1,728,00秒。

X-Download-Options

用於放置直接打開用戶下載文件。

X-Download-Options: noopen
  • noopen 用於指定IE 8以上版本的用戶不打開文件而直接保存文件。在下載對話框中不顯示“打開”選項。

Set-Cookie

用於設置Cookie。

Set-Cookie: name=value; secure; HttpOnly
  • secure 只在進行HTTP通信時發送Cookie。
  • HttpOnly 指定不能從JavaScript腳本代碼訪問Cookie值。
  • 雖然path屬性用於指定Cooki發送路徑,但是不能被作為一種安全手段。
  • domain屬性具有后方一致特性,出於安全考慮最好不要使用該屬性,除非明確指定向多個域發送Cookie。

Cache-Control

指定瀏覽器的緩存方式,通過逗號分隔。

Cache-Control: no-cache, no-store, must-revalidate
  • no-cache 指定服務器端不緩存數據。
  • no-store 指定不能在本地緩存中保存數據。
  • must-revalidate 指定服務器端可以緩存數據,但是必須對數據進行確認。

pragma

用於與HTTP/1.0進行向后兼容的響應頭字段,原本只被使用在客戶端請求頭中。與“Cache-Control: no-cache”結合使用。

pragma: no-cache
  • no-cache 客戶端要求所有中間服務器不能緩存數據。

expires

指定數據的有效時間。不希望緩存數據時可以將該字段值與Date字段值指定為相同值或者將該字段值指定為“-1”。

expires: -1

content-type

指定實體內對象的媒體類型(MediaType)。在charset關鍵字中指定文字編碼格式。

content-type: text/html;charset=utf-8

HTTP響應頭的設定方法

在Apache服務器中指定響應頭時,需要在httpd.conf文件中將下述模塊設定為有效狀態。

  • LoadModule headers_module modules/mod_headers.so

然后使用下述方法設定HTTP響應頭。

Header set HeaderFieldName "value"
//例如
Header set X-XSS-Protection "1; mode=block”




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM