博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
防盗链之URL参数签名 总结
阅读量:6343 次
发布时间:2019-06-22

本文共 1030 字,大约阅读时间需要 3 分钟。

一、概述

  传统的 IP 禁用、referer 防盗链、User-Agent 防盗链、地区访问控制等防盗链措施已经无法完全满足用户要求,所以开发出URL参数签名方式来防盗链

二、实现

  Token防盗链是通过对时间有关的字符串进行签名,将时间、签名信息通过一定的方式传递给 web server节点服务器作为判定依据,web server节点依据约定的算法判断来访的 URL 是否有访问权限。如果通过,执行下一步;如果不通过,响应 HTTP 403 状态码或者通过 302 跳转到其他 URL。

  1、签名参数

    etime: URL 过期的时间,必须是 UNIX TIME 格式,如:2017/3/9 9:19:0 -> 1489022340

    secret: 和 平台约定的签名密钥,需要在 平台后端管理控制台配置,(服务->  配置 -> 防盗链 -> Token 防盗链);

  2、算法:

    sign = MD5( secret & etime & URI )

    Token = MD5( secret & etime & URI ){ 中间 8 位 } + etime

  假设当前的 UNIX TIME 时间为:1370000000,某图片资源(例如:)10 分钟有效,则:

    etime = 1370000000 + 600 = 1370000600

    uri = '/dir/pic.jpg'

    sign = MD5( secret & etime & URI ) = xxxxxxxxxxxxabcdefghyyyyyyyyyyyy

    Token  = MD5( secret & etime & URI ){ 中间 8 位 } + etime = abcdefgh1370000600

  最后经过客户端业务服务器生成的 URL 为:

    ?token=abcdefgh137000060

 三、验证

  • 根据约定解析取出过期时间,和当前 web Server节点服务器时间进行比较,确认请求是否过期

  • 根据上文约定好的算法计算方式,计算出 MD5 加密串后,和 URL 中的加密串进行比较,验证加密串是否一致

  • 如果以上两个步骤都验证通过,请求才会被认为是合法的,这时 web server 会请求资源响应给客户端,否则会被认为是非法请求,直接响应 HTTP status code 403

转载地址:http://kakla.baihongyu.com/

你可能感兴趣的文章
Spring_MVC
查看>>
Java统计文件夹中文件总行数
查看>>
python之基本数据类型及深浅拷贝
查看>>
将bootstrap弹出框的点击弹出改为鼠标移入弹出
查看>>
SKF密码设备研究
查看>>
数据对象映射模式(通过工厂模式和注册树模式)v2
查看>>
4939 欧拉函数[一中数论随堂练]
查看>>
MySQL笔记(一)
查看>>
spring boot 包jar运行
查看>>
通过VMWare安装Linux(Ubuntu) 虚拟机在Window10系统和问题解决方案
查看>>
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
.NET与C#
查看>>
在uwp仿制WPF的Window
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>