为什么要防盗链?

例如手机/PC应用,如果有人知道你的api地址,和应用格式,那么他人就可以利用这个接口进行盗链;盗取/盗用里面的数据。

防盗链特性:

1、因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效;

2、因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程;

3、有点接口需要用户登录才能访问;

4、有点接口不需要用户登录就可访问;

现在的接口基本是mvc模式,URL基本是restful风格,URL大体格式如下

http://test.com/模块名/控制器名/方法名?参数名1=参数值1&参数名2=参数值2&参数名3=参数值3

防盗链方法一 keyword 口令应用:

声明一个keyword 口令,例如'abc',每次请求都要将keyword 推送至服务端,服务端对keyword进行对比,匹配正确后返回data。此方法只适用在手机APP中,因为使用在PC端,很容易被人截取keyword。

例子:http://test.com/模块名/控制器名/方法名?key=keyword

防盗链方法二 url permitted 匹配:

将允许的url保存至数据库中,通过$_SERVER['HTTP_REFERER'] 获取 推送请求者的url,然后与 url permitted 库进行匹配,匹配到后则返回data。此方法只使用于PC网页端,因为手机端没有固定的url。

<?phpif(isset($_SERVER['HTTP_REFERER'])){if(strpos($_SERVER['HTTP_REFERER'],"url permitted")==0){echo "surcess";}else echo "error";}?>

防盗链方法三 token:

它的职责是保持接口访问的隐蔽性和有效性,保证接口只能给自家人用。

token设计方法有很多,可以自定义算法,下面就介绍一种 MVCrestful 的一种md5 加密算法。

设计规则:

api_token = md5 ('模块名' + '控制器名' + '方法名' + '2017-04-17' + '加密密钥') = 388b0934e1ec3e0cd50ffe94e152020e

1.2017-04-17 位当天时间

2.'加密密钥' 为私有的加密密钥,手机端需要在服务端注册一个“接口使用者”账号后,系统会分配一个账号及密码,数据表设计参考如下

字段名

字段类型

注释

client_id

varchar(20)

客户端ID

client_secret

varchar(20)

客户端(加密)密钥

<?php
// 1、获取 GET参数 值
$module = $_GET['mod'];
$controller = $_GET['ctl']
$action = $_GET['act'];
$client_id = $_GET['client_id'];
$api_token = $_GET['api_token'];
// 2、根据客户端传过来的 client_id ,查询数据库,获取对应的 client_secret
$client_secret = getClientSecretById($client_id);
// 3、服务端重新生成一份 api_token
$api_token_server = md5($module . $controller . $action .  date('Y-m-d', time()) .  $client_secret);
// 4、客户端传过来的 api_token 与服务端生成的 api_token 进行校对,如果不相等,则表示验证失败
if ($api_token != $api_token_server) {exit('access deny');  // 拒绝访问
}
?>

此方法有效用于所有平台。

防盗链方法四 其他:

实际登录,cookie,session都可以用于做防盗链,只不过不像前面三种那么方便设计与使用。

  

  

转载于:https://www.cnblogs.com/peiyu1988/p/6723425.html

防盗链与token运用相关推荐

  1. 秋天的第一份“干货” I Referer 防盗链,为什么少了个字母 R?

    Referer 为什么叫 Referer?它代表什么意思?在诸多防盗链竞争中它有什么优势? 今天,在聊 Referer 防盗链之前,先来聊聊我们在现实生活中常常碰到的推荐人(Referrer)信息. ...

  2. 如何选择适合自己网站的防盗链

    当你的网站被攻击的时候,当你的资源出现异常访问的时候,又或者是你需要一些特殊的对资源访问的限制时,防盗链的选择你一定要看看. 作为一个优秀的当代攻城狮/程序猿,相信好多人在业余时间都会经营一个自己的博 ...

  3. FastDFS防盗链

    FastDFS内置防盗链采用Token的方式.Token是带时效的,也就是说在设定的时间范围内,比如1分钟,token是有效的.token包含了文件id.时间戳ts和密钥.FastDFS在URL中带上 ...

  4. PHP预防重复http协议,PHP HTTP协议:防盗链

    test.html:主界面 test 查看图片 import.php:通过主页面进入的主机下的页面 //获取Referer if(isset($_SERVER['HTTP_REFERER'])) { ...

  5. Token 防盗链详解

    前言 随着互联网的高速发展,无论是移动 APP 还是 WEB 站点,访问的安全问题始终困扰着内容提供商.CDN ( Content Delivery Network,内容分发网络 ) 服务作为当今互联 ...

  6. SRS 对接GB28181 token防盗链配置

    token防盗链:用户在播放时,必须先申请token,SRS会回调http检查这个token合法性. # push gb28181 stream to SRS.listen 1935; max_con ...

  7. 防盗链测试01 - Jwplayer+Tengine2.3.1 mp4模块打造流媒体测试服务器

    最近有个想法,想做类似下面的视频URL防盗验证: 1.URL Tag Validation2.Special format of URL for preventing unauthorized usa ...

  8. php 百度网盘上传文件大小限制吗,百度云存储,curl_百度云存储如何上传数G超大文件(视频类)和防盗链等一系列问题,百度云存储,curl - phpStudy...

    百度云存储如何上传数G超大文件(视频类)和防盗链等一系列问题 最近在开发一个视频网站,打算用百度开放云平台上的云存储,但视频较大,一般有几个G(高清电影).1G一下的视频管理控制台里能用页面上传,但1 ...

  9. 流媒体直播防盗链安全控制

    转载自:http://blog.csdn.net/u013488847/article/details/45789071 防盗链概念主要是从网站的业务中起来,原有定义只要针对网站内容中的文字,图片被他 ...

最新文章

  1. VS2010运行速度优化汇总
  2. MapReduce1和Yarn的工作机制
  3. python 项目构建工具_python的构建工具setup.py
  4. 亲测:阿里云的高效云盘真没有声称那么好
  5. 《学习opencv》笔记——矩阵和图像处理——cvGEMM,cvGetCol,cvGetCols and cvGetDiag
  6. Python基础教程:类的property特性
  7. 科普丨营销人,还不知道行为触发的话你就 OUT 了!
  8. 【数据分析】数据分析基础:SQL重要知识点梳理!
  9. 从根本上了解异步编程体系
  10. CSS Sprite “精灵图“
  11. 10.27模拟 总结
  12. Vue 生命周期LIFECYCLE是8个吗?
  13. 手把手教你如何安装Mac OS X 图文详细教程
  14. 从前台获取的数据出现乱码的解决方法
  15. webpack2中postcss-loader报错noconfigfound
  16. GDAL源码剖析(四)之命令行程序说明一
  17. 优先队列及BFS应用
  18. matlab三边定位算法,利用matlab分别对三边测量定位算法和改进算法进行仿真和验证...
  19. rk板子linux系统安装rga,drm,mpp
  20. 走进大数据丨 一条让我虎躯一震的SQL

热门文章

  1. OpenResty(nginx)操作redis的初步应用
  2. Python doc转docx
  3. 7-26 单词长度 (15 分) python实现
  4. rfid在高速公路管理中的应用_RFID亮灯电子标签在仓储管理中的应用
  5. case when then else_啃食Oracle:条件分支表达式CASE
  6. python matplotlib 图片模糊问题
  7. 聚类分析:1.相似性测度
  8. ChaiNext:过去24小时比特币向底部试探
  9. 链上体育和游戏平台Rage.Fan完成160万美元私募轮融资
  10. Vortex DeFi与DeFi Wizard合作建立ETH-BSC跨链桥