登录验证以及安全问题: 
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. [Debug] How to Debug a NestJs Backend using the Chrome Dev Tools

    TO debug NestJS code with Chrome dev tool, we can run: node --inspect-brk dist/rest-api/src/main.js ...

  2. LeetCode 1215. Stepping Numbers

    原题链接在这里:https://leetcode.com/problems/stepping-numbers/ 题目: A Stepping Number is an integer such tha ...

  3. CollectionUtils.select用法

    import java.util.ArrayList;import java.util.List; import org.apache.commons.collections.CollectionUt ...

  4. nexus 3.17.0 简单说明

    nexus 在6.24 发布了3.17.0 ,同时包含了好多新的特性 以下为一些主要变动: routing rules 可以增强repo 的安全 apt repo 格式的支持 可以方便的为ubuntu ...

  5. Linux 系统管理——文件系统与LVM、磁盘配额实例

    1.为主机增加80G SCSI 接口硬盘 2.划分三个各20G的主分区 3.将三个主分区转换为物理卷(pvcreate),扫描系统中的物理卷 4.使用两个物理卷创建卷组,名字为myvg,查看卷组大小 ...

  6. BMP文件格式详解(BMP file format)

    BMP文件格式,又称为Bitmap(位图),或是DIB(Device-Independent Device,设备无关图),是windows系统中广泛使用的图片文件格式,由于它可以不作任何变换地址保存图 ...

  7. Fiddler如何查找登陆的可用cookie用于其他请求?方式一

    测试过程中,如果你的请求权限是通过cookie响应而不是通过token获得,那么使用如下设置: 1.进入fiddler抓取: 2.jmeter中使用cookie 直接放进去就好了,一般浏览器cooki ...

  8. java 73题以及答案

    作者:乌枭原文:https://blog.csdn.net/qq_34039315/article/details/78549311 1.在java中守护线程和本地线程区别? java中的线程分为两种 ...

  9. C#中将xml文件反序列化为实例时采用基类还是派生类的问题

    基类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  10. win7下查看进程端口

    一. 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano 可以查看所有进程 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道 ...