登录验证以及安全问题: 
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前后端分离开发中的验证与安全问题的更多相关文章

  1. Web前后端分离开发(CRUD)及其演变概括

    今天学习了前后端分离开发模式又从网上查了一些资料就写了一篇博客分享: 一.为什么分离前后端 1.1早期开发 1.2后段为主mvc模式 1.2.1Structs框架介绍 1.2.2Spring mcv开 ...

  2. 【坑】前后端分离开发中 跨域问题以及前台不带cookie的问题

    文章目录 前言 跨域问题 cookie问题 拦截器导致的跨域问题 后记 前言 场景一: 前台哒哒哒的点击页面,发送请求,但是后台服务器总是没有回应,后台接口虽打了断点,但是根本进不到断点处: 前端:我 ...

  3. laravel5.7 前后端分离开发 实现基于API请求的token认证

    最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ...

  4. 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!

    摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...

  5. Springboot前后端分离开发

    .1.springboot前后端分离开发之前要配置好很多东西,这周会详细补充博客内容和遇到的问题的解析 2,按照下面流程走一遍 此时会加载稍等一下 pom.xml显示中加上阿里云镜像可以加速下载配置文 ...

  6. web前后端分离漏洞分析防御

    web前后端分离漏洞分析防御 漏洞分析,主要漏洞有 一.跨站脚本攻击XSS 程序 + 数据 = 结果:攻击后,数据夹杂一部分程序(执行代码),导致结果改变: 1.XSS攻击注入点 (a):HTML节点 ...

  7. vue+mockjs 模拟数据,实现前后端分离开发

    在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰 ...

  8. 基于RAP(Mock)实现前后端分离开发

    看看RAP的官方定义: 什么是RAP? (Rigel API Platform) 在前后端分离的开发模式下,我们通常需要定义一份接口文档来规范接口的具体信息.如一个请求的地址.有几个参数.参数名称及类 ...

  9. SpringBoot,Vue前后端分离开发首秀

    需求:读取数据库的数据展现到前端页面 技术栈:后端有主要有SpringBoot,lombok,SpringData JPA,Swagger,跨域,前端有Vue和axios 不了解这些技术的可以去入门一 ...

随机推荐

  1. Bootstrap Method

    bootstrap方法是一种重采样技术,用于通过抽样数据集来估计总体统计数据.是一种面向应用的.基于大量计算的统计思维——模拟抽样统计推断. 它可以用来估计统计数据,例如平均值或标准差.在应用机器学习 ...

  2. 2019-2020-1 20199302《Linux内核原理与分析》第八周作业

    一.上课学习笔记 1.shell作用:①运行程序 ②重定向(输入/输出重定向) ③可编程(写脚本) 执行一个c程序时,如果切进另一个进程,会进入该进程而切不回原进程,所以需要为调用的进程创一个子进程. ...

  3. 深入解析pure virtual function call

    在本文中,我们将不解释为什么会提示“纯虚拟函数调用”和如何提示“纯虚拟函数调用”,而是详细解释在win32平台的构造函数/析构函数中直接/间接调用纯虚拟函数时程序本身.在开始时,将显示一个经典示例,在 ...

  4. python 微服务开发书中几个方便的python框架

    python 微服务开发是一本讲python 如果进行微服务开发的实战类书籍,里面包含了几个很不错的python 模块,记录下,方便后期回顾学习 处理并发的模块 greenlet && ...

  5. 使用vault pki 为nginx 生成tls 证书文件

    关于vault pki 管理的使用的可以参考官方文档或者docker-vault 以下演示一个简单的基于vault pki 为nginx 提供tls 证书 项目环境配置 nginx 配置文件   wo ...

  6. 利用vue-meta管理头部标签

    在 Vue SPA 应用中,如果想要修改HTML的头部标签,或许,你会在代码里,直接这么做 // 改下title document.title = 'what?' // 引入一段script let ...

  7. mysql rtrim() 函数

    mysql> select rtrim(" cdcdcd "); +--------------------+ | rtrim(" cdcdcd ") | ...

  8. manjaro系统的回滚操作

    作为linux系统的爱好者,自从使用linux后,就喜欢追求新的软件,连系统都换成了滚动升级的版本.manjaro基于arch linux,同时也是kde的支持系统,升级非常频繁.使用了几年,很少碰到 ...

  9. Luogu3379 【模板】最近公共祖先(LCA)

    题面 题解 这里讲一种硬核做法. 首先\(\mathrm{dfs}\)整棵树,求出这棵树的欧拉序,然后\(\mathrm{LCA}\)问题就变成了\(\pm 1\mathrm{RMQ}\)问题. 考虑 ...

  10. 记一次edusoho问题

    问题描述:Edusoho如何迁移到本地windows或另外一台Linux服务器上 解决问题步骤: 1.参考官方文档官方文档地址如下:http://www.qiqiuyu.com/my/course/3 ...