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

本文共 1082 字,大约阅读时间需要 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

转载于:https://www.cnblogs.com/chris-cp/p/8012831.html

你可能感兴趣的文章
弗洛伊德算法
查看>>
((ios开发学习笔记 十))代码实现自定义TableView
查看>>
WPF 之转换器
查看>>
mongo-update 操作(2)
查看>>
添加列前先检查
查看>>
[Step By Step]SAP HANA PAL KNN 近邻预测分析K- Nearest Neighbor编程实例KNN
查看>>
oracle set命令详解
查看>>
可变的数据变量一定要初始化之后才能再用
查看>>
浅用block 转
查看>>
HDU 3032 Nim or not Nim?(博弈,SG打表找规律)
查看>>
Android soundpool初探
查看>>
c#操作access,update语句不执行的解决办法
查看>>
艺术(良质)的代价--读禅与摩托车维修艺术
查看>>
Linux 比较重要且难掌握命令 集合
查看>>
C#基本概念列举说明
查看>>
如何有效使用Project(2)——进度计划的执行与监控
查看>>
iOS 工作遇到问题记录
查看>>
Android 中屏幕点击事件的实现
查看>>
做为一个前端工程师,是往node方面转,还是往HTML5方面转
查看>>
spark 安装配置
查看>>