• Nginx的防盗链技能


    防盗链是什么意思呢?举个简单的例子,我买了某个视频的版权,还花了大价钱买了CDN,但是其他人直接链接指向我的这个视频,那我这视频直接出现在别人网站的页面上,那我岂不巨亏。
    网站资源被盗链简单来说就是别人不是从你的网站通过下载资源,被盗链的几种可能情况:
    1、在人气非常旺的网站、论坛、社区的网页里直接引用了你网站上的图片,或者直接在其他网页(使用flash或媒体播放插件)里嵌入了你网站上的mp3。
    2、在人气非常旺的网站、论坛、社区里提供了你的资源的下载地址。
    3、你网站的资源可能被一些下载软件列入了“资源候选名单”,当其他人用下载工具下载相同的文件时,下载软件会自动找上门并且从你的服务器下载。

    简单有效的防盗链措施 referer 模块

    • 原理:
      某网站通过url引用了你的页面,当用户在浏览器上点击了url时,http请求的头部会通过referer头部,将该网站的当前url带上,告诉服务器本次请求是从哪里发起的。
      通过referer模块,用invalid_referer 变量根据配置判断referer头部是否合法。
      http://nginx.org/en/docs/http/ngx_http_referer_module.html
    • valid_referer 指令
      参数:
    • none 允许确实referer头部的请求访问
    • block 允许referer头部没有对应的值的请求访问
    • server_names 若referer中的域名与server_name 中的本机某个域名匹配则允许访问。(或可以指定表达式)
      valid_referers none blocked server_names
                     *.example.com example.* www.example.org/galleries/
                     ~.google.;
      
      if ($invalid_referer) {
          return 403;
      }
      可以看到referer 模块生效了,因为referer头带的 referer.wjx.com 并没有在配置中匹配到。
      但是这种是比较low的,对防御大部分浏览器还行,但是防御自定义客户端伪造头部就没法了。
  • 相关阅读:
    微信小程序通过CODE换取session_key和openid
    BZOJ1497[NOI2006]最大获利——最大权闭合子图
    Leetcode#149 Max Points on a Line
    IO流总结
    java基础比较好的笔记总结
    chrome web开发工具
    day 01 常量 注释 int(整型) 用户交互input 流程控制语句if
    10.2:异或树经验
    搜索+保存路径
    搜索+简单dp
  • 原文地址:https://www.cnblogs.com/zouhong/p/12288421.html
Copyright © 2020-2023  润新知