跨網域存取控制
跨網域存取
#為什麼瀏覽器禁止跨網域存取
不安全,容易出現csrf攻擊!
如果駭客控制的網站b在回應頭裡加入了讓客戶端去存取網站a的惡意訊息,就會出現csrf攻擊
nginx如何設定跨網域存取
add_header語法
syntax:add_header name value [always];
default:—
context:http, server, location, if in location
語法解釋:
add_header name value [always];
name 表示回應頭回傳的key
location ~ .*\.(htm|html)$ { add_header access-control-allow-origin *; add_header access-control-allow-methods get,post,put,delete,options; root /opt/app/code; }
防盜鏈
基於http_referer防盜鏈配置模組
ngx_http_referer_module模組用於阻止對「referer」頭欄位中具有無效值的請求存取網站。 舉例valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; }
referer_hash_bucket_size語法
referer_hash_bucket_size size;表示設定有效:
referer_hash_bucket_size size;表示設定有效引用散列表的儲存區大小。referer_hash_max_size 語法
#default: referer_hash_max_size 2048;
##context: server, location
server_names 表示「referer」請求頭字段包含一個伺服器名稱;
string 表示定義伺服器名稱和可選的uri前綴。伺服器名稱的開頭或結尾可以包含“*”。在檢查期間,「referer」欄位中的伺服器連接埠被忽略;
#防盜鏈小案例
touch test_referer.html (在/op/app/code 目錄下)
<html> <head> <meta charset="utf-8"> <title>imooc1</title> </head> <body style="background-color:red;"><br data-filtered="filtered"> <h1>张彪</h1> <img src="http://192.168.1.112/wei.png"/ alt="Nginx跨域存取和防盜鏈如何配置" > </body> </html>
設定防盜鏈如果不是從www.zhangbiao.com 網域轉來的就會報錯
location ~ .*\.(jpg|gif|png)$ { valid_referers none blocked www.zhangbiao.com; if ($invalid_referer) { return 403; } root /opt/app/code/images; } location ~ /test_refer.html { root /opt/app/code; }
http://192.168.1.112/test_refer.html
訪問
http://www.zhangbiao.com/test_refer.html
以上是Nginx跨域存取和防盜鏈如何配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!