api解决用户安全主要采用两种方案:

一.使用token识别用户信息,作为识别用户的凭证

 1.为什么使用token?

  常规性的pc站点,使用session存储用户登录状态。

  即用户登录之后,服务端会生成一段加密后的数据(session id),存储在服务器内存中,并发送给浏览器,浏览器会把这段信息存储在cookie中。

  然后每次访问http请求时,会带上session id在头文件中,假如在服务器内存中存在此session id则通过认证,获取登录状态。(这个就是session原理)所以,当浏览器禁用cookie时,session是不能使用的。

  回到我们主题:

  为什么使用token呢

  a.token是无状态协议。token直接存储于数据库,服务器上不需要存储session信息

  b.客户端不需要存储cookie,防止 CSRF 通过 cookie攻击

  c.token更安全,为提交数据添加签名,防止数据在传输过程中被修改

 

二.使用sign签名加密算法,防止别人的恶意提交修改数据

1.以下是php创建签名代码。密钥与前端约定,保证安全性。

 /**
* @param $paramArr 参数
* @param $appSecret 密钥
* @return string
*
*/
private function createSign($paramArr,$appSecret){
ksort($paramArr);
reset($paramArr);
$sign = "";
foreach ($paramArr as $key => $val) {
if($key=='user' && $val=='app')continue;
if ($key != '') {
$sign .= $key . '=' . $val . '&';
}
}
$sign = md5($sign . $appSecret);
return $sign;
}

2.验证签名部分。

 private function check(){
if(!isset($_POST['sign']))self::error('数据校验失败',303);
$sign = $_PSOT['sign'];
unset($_POST['sign']);
if($sign!=$this->createSign($_POST,$this->key)){
self::error('数据校验失败',303);
}
return true;
}

基于api安全性的解决处理方案的更多相关文章

  1. ASP.NET Web API 2系列(四):基于JWT的token身份认证方案

    1.引言 通过前边的系列教程,我们可以掌握WebAPI的初步运用,但是此时的API接口任何人都可以访问,这显然不是我们想要的,这时就需要控制对它的访问,也就是WebAPI的权限验证.验证方式非常多,本 ...

  2. 基于JWT的token身份认证方案

    一.使用JSON Web Token的好处? 1.性能问题. JWT方式将用户状态分散到了客户端中,相比于session,可以明显减轻服务端的内存压力. Session方式存储用户id的最大弊病在于S ...

  3. 基于 OpenResty 的动态服务路由方案

    2019 年 5 月 11 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙武汉站,又拍云首席布道师在活动上做了< 基于 OpenResty ...

  4. API网关在API安全性中的作用

    从单一应用程序切换到微服务时,客户端的行为不能与客户端具有该应用程序的一个入口点的行为相同.简单来说就是微服务上的某一部分功能与单独实现该应用程序时存在不同. 目前在使用微服务时,客户端必须处理微服务 ...

  5. 基于JWT的token身份认证方案(转)

    https://www.cnblogs.com/xiangkejin/archive/2018/05/08/9011119.html 一.使用JSON Web Token的好处? 1.性能问题. JW ...

  6. JWT 实现基于API的用户认证

    基于 JWT-Auth 实现 API 验证 如果想要了解其生成Token的算法原理,请自行查阅相关资料 需要提及的几点: 使用session存在的问题: session和cookie是为了解决http ...

  7. 基于.NetCore3.1系列 ——认证授权方案之Swagger加锁

    一.前言 在之前的使用Swagger做Api文档中,我们已经使用Swagger进行开发接口文档,以及更加方便的使用.这一转换,让更多的接口可以以通俗易懂的方式展现给开发人员.而在后续的内容中,为了对a ...

  8. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  9. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

    开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...

随机推荐

  1. 实例源码--Android的ListView控件的总结

    下载源码   技术要点: 1.ListView控件的总结 2.微信ListView气泡的实现 3.ListView仿优酷播放列表 4.ListView刷新列表 5.详细的源码注释 ...... 详细介 ...

  2. Scala中的构造器

    Scala中的构造器 Scala中的构造器分为两类,主构造器和辅助构造器 主构造器是通过类名后面跟的括号里加参数列表来定义 辅助构造器是通过关键字this定义 定义一个无参主构造器 class rec ...

  3. 称球问题(zt)

    下面说的这个问题可能大家都看到过,它是这么描述的: 现在有n(n>=2)个球,n个球外观一模一样,但是重量有区别,其中有且仅有一个球的重量比其它n-1个球要重,现在有一个天平,天平是完好无损的, ...

  4. 琐碎-同步centos集群的时间

    想马上上手HBase,其对集群时间同步要求很高,当然,hadoop也是

  5. ASP.NET MVC 之 路由配置

    主要操作在App_Start 目录下的 RouteConfig.cs 文件. 一.Url构造方式 1.命名参数规范+匿名对象 routes.MapRoute( name: "Default& ...

  6. Boxes in a Line

    Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to right. Your ...

  7. thymleaf分支用法

    <div th:switch="${user.role}"> <p th:case="'admin'">User is an admin ...

  8. 并发MD5计算方法

    MD5与SHA算法一样,利用他们可以计算某段数据的唯一hash值,常用做校验码.而MD5比SHA算法性能高.在我参加的一个项目中,主要用MD5码值来去重,因此对计算性能要求较高.网上有对MD5算法并行 ...

  9. 给jdk写注释系列之jdk1.6容器(3)-Iterator设计模式

    前面讲了两种List,一种基于数组实现的ArrayList,一种基于链表实现的LinkedList,这两种list是我们工作中最常用到的List容器.当然数组和链表也是两种常见的基本数据结构,其他基本 ...

  10. [改善Java代码]使用构造块精炼程序

    建议36: 使用构造代码块精炼程序 什么叫代码块(Code Block)?用大括号把多行代码封装在一起,形成一个独立的数据体,实现特定算法的代码集合即为代码块,一般来说代码块是不能单独运行的,必须要有 ...