Nginx跨域訪問和防盜鏈如何配置

跨域訪問控制

跨域訪問

Nginx跨域訪問和防盜鏈如何配置

為什么瀏覽器禁止跨域訪問

不安全,容易出現csrf攻擊!

Nginx跨域訪問和防盜鏈如何配置

如果黑客控制的網站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 目錄下)

  ??<meta> ??<title>imooc1</title><br>  ?<h1>張彪</h1> ??@@##@@  

Nginx跨域訪問和防盜鏈如何配置

配置防盜鏈如果不是從 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

Nginx跨域訪問和防盜鏈如何配置

訪問

http://www.zhangbiao.com/test_refer.html

Nginx跨域訪問和防盜鏈如何配置

允許其他網站訪問自己網站資源配置

Nginx跨域訪問和防盜鏈如何配置

Nginx跨域訪問和防盜鏈如何配置

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享