说明:基于前后端,尤其是使用Ajax请求的接口,现在市面上网页上调用的Ajax基本都是没有验证的,如果单独提取之后可以无线的刷数据。

继上一篇http://www.cnblogs.com/EasonJim/p/6178402.html文档所提到的Ajax请求的接口验证问题,现在基本上有了解决思路了,就是JWT标准,注意,这个是一个标准协议,和oAuth这种协议类似。

JWT主要实现的Token机制,为每一个需要调用的接口生成验证的Token,然后后端进行验证合法性。

JWT是一个标准,那么实现这个标准的语言就非常多,比如C,C++,Java等,具体的参考官方提供的文档即可。

官网:https://jwt.io/

生成原理:比如我们请求一个接口时,会使用JWT生成的Token,一同传递到后端进行验证合法性,对于生成Token可以是页面载入的时候写到Cookie,或者写到页面的固定位置。

可能遇到的问题和解决方案:

1、如果基于Java Web系统,前后端没有做分离时,基本页面输出使用了Java Web的模板引擎的,可以为输出的页面带上生成Token字符串,然后这些Ajax请求全部带上这个Token。

1.1、可能会出现这个Token暴露在页面,然后用工具提取到,然后进行请求;对于这个问题可以这样做,Token本身有过期机制,比如2个小时过期,这样一般能杜绝绝对部分的请求。

1.2、再加强一下,比如请求的接口上做一个验证,比如获取请求时判断上一个请求的头上Referer值,看下是否为当前域名下的。

1.2、比如生成Token时,带上请求的参数进行生成再输出,这样也就一个Token只能做一个参数的请求,也能杜绝掉一大部分的伪造请求。

1.3、对于生成Token,可以是单独的接口,但这样有点危险,可能会让人提取去用,但是如果判断只能当前域名下使用可能会有效。

1.4、也可以这样生成这个Token,比如我们要访问的B页面,那么先请求A页面再跳转到B页面,此时就会带上Token在Cookie上,然后再请求。不过同样也会被提取的风险。

1.5、学微信的做法,微信的前端JS做了Token的验证,比如页面上写好AppID,然后Token是服务端生成好放入到页面的,并且与域名进行绑定,如果域名变了,就无法使用这个Token请求。那么我们还是回到Referer的判断上进行判断,是否是本域名发出的请求。

2、如果是别的系统进行调用时,比如前后端分离的方案,需要使用到Ajax进行请求第三方接口的。

2.1、没办法,这个Token只能有后端生成好给你,然后你再使用它进行请求,并且第三方接口上也会判断Referer的来源域名。

2.2、还是使用上面的A和B页面进行跳转,然后获取Token,当然这个A页面可以是第三方去做,然后针对域名写Cookie。

3、综上,基本上是生成Token要过期时间,要判断请求的来源域名。、

4、针对Ajax是没有绝对安全的,只能做到比较安全;最明显的例子就是微信Web端,网上同样针对微信的Web API进行抓包分析,然后实现了请求的。既然加了Token机制只是为了再复杂多一步,使刷包的人做多一步难的操作。

参考:

http://m.blog.csdn.net/zwz568017880/article/details/61197587

前端和后端采用接口访问时的调用验证机制(基于JWT的前后端验证)(思路探讨)的更多相关文章

  1. (转)也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

    原文链接:http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/ 随着不同终端(pad/mobile/pc)的兴起 ...

  2. 也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

    前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们重新思考了“前后端”的定义,引入前端同学都熟悉的NodeJS,试图 ...

  3. 基于NodeJS的全栈式开发(基于NodeJS的前后端分离)

    也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) 前言 为了解决传统Web开发模式带来的各种问题,我们进行了许多尝试,但由于前/后端的物理鸿沟,尝试的方案都大同小异.痛定思痛,今天我们 ...

  4. [转] 基于NodeJS的前后端分离的思考与实践(五)多终端适配

    前言 近年来各站点基于 Web 的多终端适配进行得如火如荼,行业间也发展出依赖各种技术的解决方案.有如基于浏览器原生 CSS3 Media Query 的响应式设计.基于云端智能重排的「云适配」方案等 ...

  5. 从零玩转SpringSecurity+JWT整合前后端分离

    从零玩转SpringSecurity+JWT整合前后端分离 2021年4月9日 · 预计阅读时间: 50 分钟 一.什么是Jwt? Json web token (JWT), 是为了在网络应用环境间传 ...

  6. 基于Kubernetes实现前后端应用的金丝雀发布

    基于Kubernetes实现前后端应用的金丝雀发布 公司的研发管理平台实现了Gitlab+Kubernetes的Devops,在ToB和ToC场景中,由于用户量大,且预发布环境和生产环境或多或少存在差 ...

  7. 基于 koajs 的前后端分离实践

    一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: ...

  8. Spring Security + JWT实现前后端分离权限认证

    现在国内前后端很多公司都在使用前后端分离的开发方式,虽然也有很多人并不赞同前后端分离,比如以下这篇博客就很有意思: https://www.aliyun.com/jiaocheng/650661.ht ...

  9. 【SpringSecurity系列2】基于SpringSecurity实现前后端分离无状态Rest API的权限控制原理分析

    源码传送门: https://github.com/ningzuoxin/zxning-springsecurity-demos/tree/master/01-springsecurity-state ...

随机推荐

  1. 选择法数组排序参考(Java)

    package com.swift; public class Xuanze { public static void main(String[] args) { int[] arr= {28,2,3 ...

  2. 学习笔记(_huaji_)

    假如我没有见过太阳,我也许会忍受黑暗. 如果我知道自己会在哪里死去,我就永远都不去那儿.失败的经历,其实也有它的价值. 人的过失会带来错误,但要制造真正的灾难还得用计算机. 嘴角微微上扬已不复当年轻狂 ...

  3. axure笔记--变量值在页面之间的传递

    fx     先给局部变量赋值,再添加到上面,即给全局变量赋值. 实现页面跳转: 1.打开链接,选择要跳转的下个页面---确定 2.打开那个下一个跳转的页面,要得到上个页面的值,需要到页面交互---页 ...

  4. 解决zend studio代码无法自动提示的3个方法

    最近电脑重装,索性把用了好多年的老版本7.x 升级了,网上下载了一个12.x的破解版. 起初一切正常,等导入项目开始开发的时候发现PHP函数尽然没有提示,一脸懵逼! 经过多方查阅和尝试,现在分享3个解 ...

  5. VS搭建一个WEB的简历第二天,,,最终目标写个好看的简历,再搭建一个自己脑海的网页

    VS做简历的第二天 第二天吸取了第一天的教训写的代码 第一天写的代码https://www.cnblogs.com/pythonywy/p/10816215.html,写了一堆错误T T 非常感谢Li ...

  6. (转)TDD的iOS开发初步以及Kiwi使用入门

    本文转自“瞄神”博客 TDD的iOS开发初步以及Kiwi使用入门 测试驱动开发(Test Driven Development,以下简称TDD)是保证代码质量的不二法则,也是先进程序开发的共识.App ...

  7. 折半查找,binarySearch

    折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务.它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比 ...

  8. python基础学习笔记——collections模块

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  9. bluej

    他山之石,可以攻玉!吾辈之道,披荆斩棘! 个人源码地址: https://gitee.com/blue_phantom

  10. PYDay1-洗剑

    学习语言的阶段: 第一阶段:所有东西都是新的::一个月 第二阶段:开始懂一些::一个月 第三阶段:感觉自己是不可战胜的:第三~第四个月 第四阶段:突然感觉什么都不知道,开发是无止境的::培训阶段不会遇 ...