zoukankan      html  css  js  c++  java
  • Nginx跨域访问场景配置和防盗链

    跨域访问控制

    跨域访问

    为什么浏览器禁止跨域访问

    • 不安全,容易出现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;">
       <h1>张彪</h1> <img src="http://192.168.1.112/wei.png"/> </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  

     

    允许其他网站访问自己网站资源配置

  • 相关阅读:
    for of 与 for in的区别
    Mac Item2 SSH免密登录Linux 服务器的两种方式
    组塞式,非阻塞式,同步异步
    Thrift_简介(基于C#)
    HTTP Error 500.22
    http协议
    IIS_部署出错
    JavaScript如何实现继承
    $(function(){})与 (function(){})() (function($){})() 的区别
    C#_反射机制
  • 原文地址:https://www.cnblogs.com/crazymagic/p/11028539.html
Copyright © 2011-2022 走看看