WEB前后端分离开发中的验证与安全问题
登录验证以及安全问题:
1、请求接口全部用post方式,在后端判断请求方式是否为post
2、登录密码等敏感信息要加密后传输,如用RSA(支付宝里可下载公私钥生成工具),客户端公钥加密,传到服务器后再用私钥解密:
//js公钥加密
function encrypt(data)
{
//需要引入插件jsencrypt.js 下载地址http://download.csdn.net/detail/codercwm/9770398 var RSA_PUBLIC_KEY = '';//私钥写在这里 var obj = new JSEncrypt(); obj.setPublicKey(RSA_PUBLIC_KEY); var data = obj.encrypt(data); return data;
} //php解密函数
function decrypt($data) {
$data = base64_decode($data); //读取私钥
$key_private = file_get_contents('./rsa_private_key.pem', 'r'); //进行解密
if(!openssl_private_decrypt($data, $data, openssl_pkey_get_private($key_private))) {
return false;
} return $data;
}
3、登录验证问题
(1)前后端代码放在同一个服务器,依旧可以使用session保存登录信息;
(2)在登录过程中,如果密码是明文提交,传输过程中可能会被拦截,即使加密后传输,也可用拦截到的已加密密码直接请求服务器进行登录,而且因为加密的代码是在客户端js中的,黑客可以修改客户端js,用拦截到的已加密的密码绕开此加密代码请求服务器进行登录,这是非常危险的,所以我想出了如下方案:
请求登录页面时,服务器生成一个临时token存储在服务器(session)并返回给客户端,用户提交登录时把密码和临时token拼接后通过RSA加密传回到服务器(拼接后再加密的原因是为了防止别人拦截到单单是密码加密的字符串,
因为如果拿到了单单是密码加密的字符串,即如上面所说的,无论如何也可以进行假冒登录的),传到服务器解密后把密码和token取出,判断token是否正确,若正确即进行密码判断等一系列登录操作,登录成功后销毁这个临时token。
这样即使在用户提交数据的过程中数据被拦截,拦截到的数据也是密码和临时token拼接后加密的数据,即使黑客用此数据直接对服务器进行请求,因为用户登录成功后临时token已被销毁,所以黑客并不能登录成功。
4、关于拦截和伪造cookie进行登录的预防:
(1)用户登录后,由于是用cookie记录sessid,如过请求过程中cookie被拦截,黑客就可以利用此cookie中的sessid在另一台电脑上进行登录,直至用户退出登录服务器session被销毁,这样是非常危险的,所以我想出了如下方案:
登录后生成一个临时token储存到服务器并传回到客户端,客户端下次请求时把此token传到服务器,判断与服务器中储存的token是否一样,如不一样即为未登录,如一样即销毁此token并生成新的token返回到客户端让客户端在下一次请求的时候再传回进行判断,
如此重复。 这种方法也有一个漏洞,如果用户在一次请求后,还未进行下一次请求就已被黑客拦截到登录信息并进行假冒登录,他一样可以登录成功并使用户强制下线,但这种方法已大大减少被假冒登录的机会。
5、结合4、5两种方案,我的做法如下:
用户请求登录页面的时候,服务器生成一个token保存在服务器session中和客户端cookie中,登录时客户端带上此token一起提交到服务器,验证此token是否有效,若有效即登录成功并更新此token,重新赋值到session和cookie中;
登录后的用户在每一次请求时都判断cookie中的token和session中的token是否一样,若一样即登录有效,并且要更新token,下次请求再进行判断,若不一样即登录无效。
WEB前后端分离开发中的验证与安全问题的更多相关文章
- Web前后端分离开发(CRUD)及其演变概括
今天学习了前后端分离开发模式又从网上查了一些资料就写了一篇博客分享: 一.为什么分离前后端 1.1早期开发 1.2后段为主mvc模式 1.2.1Structs框架介绍 1.2.2Spring mcv开 ...
- 【坑】前后端分离开发中 跨域问题以及前台不带cookie的问题
文章目录 前言 跨域问题 cookie问题 拦截器导致的跨域问题 后记 前言 场景一: 前台哒哒哒的点击页面,发送请求,但是后台服务器总是没有回应,后台接口虽打了断点,但是根本进不到断点处: 前端:我 ...
- laravel5.7 前后端分离开发 实现基于API请求的token认证
最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...
- 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!
摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...
- Springboot前后端分离开发
.1.springboot前后端分离开发之前要配置好很多东西,这周会详细补充博客内容和遇到的问题的解析 2,按照下面流程走一遍 此时会加载稍等一下 pom.xml显示中加上阿里云镜像可以加速下载配置文 ...
- web前后端分离漏洞分析防御
web前后端分离漏洞分析防御 漏洞分析,主要漏洞有 一.跨站脚本攻击XSS 程序 + 数据 = 结果:攻击后,数据夹杂一部分程序(执行代码),导致结果改变: 1.XSS攻击注入点 (a):HTML节点 ...
- vue+mockjs 模拟数据,实现前后端分离开发
在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰 ...
- 基于RAP(Mock)实现前后端分离开发
看看RAP的官方定义: 什么是RAP? (Rigel API Platform) 在前后端分离的开发模式下,我们通常需要定义一份接口文档来规范接口的具体信息.如一个请求的地址.有几个参数.参数名称及类 ...
- SpringBoot,Vue前后端分离开发首秀
需求:读取数据库的数据展现到前端页面 技术栈:后端有主要有SpringBoot,lombok,SpringData JPA,Swagger,跨域,前端有Vue和axios 不了解这些技术的可以去入门一 ...
随机推荐
- 使用Quasar设计Material和IOS风格的响应式网站
使用Quasar设计Material和IOS风格的响应式网站 栏目: CSS · 发布时间: 8个月前 来源: segmentfault.com 本文转载自:https://segmentfaul ...
- MySQL 开启远程链接(localhost 以外的主机)
1.在连接服务器后,操作mysql系统数据库 命令为: mysql -u root -p use mysql: 查询用户表命令:select User,authentication_string, ...
- 【洛谷P4093】 [HEOI2016/TJOI2016]序列 CDQ分治+动态规划
你发现只会改变一个位置,所以可以直接进行dp 具体转移的话用 CDQ 分治转移就好了~ #include <bits/stdc++.h> #define N 100006 #define ...
- Visual C++ 里的异常处理
微软Visual C++是Win32最广泛使用的编译器,因此Win32反向器对其内部工作非常熟悉.能够识别编译器生成的粘合代码有助于快速集中于程序员编写的实际代码.它还有助于恢复程序的高级结构.我将集 ...
- [RN] React Native 实现 FlatList上拉加载
FlatList可以利用官方组件 RefreshControl实现下拉刷新功能,但官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 不过我们仍可以通过FlatList ...
- 同期群分析(Cohort Analysis)
什么是同期群? 将相同时间段内具有共同行为特征的用户划分为同一个群体,其被称为同期群.“共同行为特征”是指在某个时间段内的行为相似.最常见的是按不同时间的新增用户来划分,然后分析留存率.当然也可以按其 ...
- [bzoj1008] 越狱
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 数据 ...
- 了解Python-白 驹 过 隙 , 忽 然 而 已
白 驹 过 隙 , 忽 然 而 已 人 生 苦 短,我 用 Python -- Life is short , you need Python 代码量少,同一样问题 ,用不同的语言解决时,一般情况下P ...
- jmeter接口自动化和性能学习目录
目录黑色代表未完成的,绿色代表已完成的文章.目录的作用的为了引导和总结自己的学习,也是为了更好的分享给大家. 一.接口自动化 jmeter解决登录token获取 jmeter五种提取器 之 正则表达 ...
- zookeeper、hbase集成kerberos
1.KDC创建principal 1.1.创建认证用户 登陆到kdc服务器,使用root或者可以使用root权限的普通用户操作: # kadmin.local -q “addprinc -randke ...