跨域訪問控制
跨域訪問
為什么瀏覽器禁止跨域訪問
不安全,容易出現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 value 表示響應頭返回的key對應的value add_header跨域配置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語法
Syntax: referer_hash_bucket_size size; Default: referer_hash_bucket_size 64; Context: server, location語法解釋:
referer_hash_bucket_size size;表示設置有效引用散列表的存儲區大小。
referer_hash_max_size 語法
Syntax: referer_hash_max_size size; Default: referer_hash_max_size 2048; Context: server, location語法解釋:
referer_hash_max_size size;表示設置有效引用者哈希表的最大大小。
valid_referers語法
Syntax: valid_referers none | blocked | server_names | string ...; Default: — Context: server, location語法解釋:
valid_referers none | blocked | server_names | string ...; none表示請求標頭中缺少“Referer”字段; blocked表示“Referer”字段出現在請求標頭中,但其值已被防火墻或代理服務器刪除; 這些值是不以“http://”或“https://”開頭的字符串; 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"/></body></html>
新聞熱點
疑難解答