当前位置: 首页 > news >正文

用户登录安全是如何保证的?如何保证用户账号、密码安全?

1.HTTP协议直接传输密码(无加密)

前端 直接发送HTTP请求(无加密),攻击者可直接捕获网络包,看到下面的明文信息

因此,使用HTTP协议传输会直接暴露用户敏感信息。

2.HTTPS协议直接传输密码(加密传输)

后来人们提出了HTTPS协议,HTTPS协议利用TLS/SSL协议进行加密。

那么,使用HTTPS协议直接传输密码(加密传输——对称加密/非对称加密)就一定是安全的吗?

对称加密存在的缺点:

  • 前后端加密解密需要同时修改代码;

  • 前端加密无非是写在JS里,但是JS有风险被直接破解从而识别加密方法。

非对称加密存在两种风险 :

  • HTTPS是应用层协议,下层采用TLS/SSL协议保证信息安全,但是在应用层之上——客户端和服务端,密文同样是可以被截获的。
  • HTTPS报文在传输过程中,如果客户端被恶意引导安装“中间人的Web信任证书”,那么HTTPS中的“中间人攻击”一样会将明文密码泄露。

结论是,无论HTTP还是HTTPS,密码必须密文传输

想想HTTPS也不能一定保障用户密码信息,那么就应该考虑在应用层之上再继续对密码进行保护,也就是编写代码来进行控制,而不依赖特定协议

3.使用摘要算法进行加密

比较容易想到的就是利用不可逆加密散列函数MD5(string),用户在注册输入密码的时候,就存储MD5(password)值,并且在WEB端先进行MD5(password),然后将密码传输至后台,与数据库中的密文进行比较(PS:MD5函数在指定位数的情况下,对相同字符串运算值相同)。

优点比较明显:

  1. 保证数据库内用户的密码信息安全
  2. 在传输过程中只能截取到用户的密文,该密文被MD5加密后无论如何也不能破解
  3. 简单高效,执行以及编码难度都不大,各种语言都提供MD5支持,开发快​​​​​​​​​​​​​​

4.使用非对称加密(RSA加密)

使用RSA密钥对,前端保留公钥文件,服务器后端保留私钥文件,每次登录时,前端使用公钥对密码进行加密,后端使用私钥解密。



不管在什么协议之下,可以看到实际发送的HTTP/HTTPS报文在MD5处理后是这样的:

这样就安全了吗???

不是的。因为攻击者并不一定要获取到你的密码明文,如果直接截获你的密码密文,然后发送给服务器不是一样可以登录吗?因为数据库里的不也是MD5(password)的一样的密文吗?HTTP请求被伪造,一样可以登录成功。

5.加上Token令牌 / 验证码

  • 在用户登录之前,服务器缓存生成随机的验证字段(设置有效时间),并发送给客户端。
  • 当客户端用户输入完账号信息,点击登录后,把这个字段一并传给服务器,用于校验。
  • 校验完成后,服务端删除缓存中的验证字段。

每次从服务器中获取认证的token,确实能保证HTTP请求是由前端传回来的了,因为token在每次登陆后都会删除并被重置,会导致黑客尝试重放账号密码数据信息来登陆的时候导致无法成功登陆。

总而言之,就是我拿到了账号以及密码的密文也登陆不了,因为,如果请求不包含后台认证的令牌token,是个非法请求。

总结

低配版用户安全:只对密码进行简单的MD5加密后传给后台。攻击者压根不需要破解出密码的明文,只需要用它截取到的用户名和MD5加密后的密码作为参数然后直接调你网站的登录接口就好了,因为通常登录接口都是完全暴露的(即任何人都可以调用),校验通过后攻击者拿到授权令牌,接下来就可以为所欲为了。

中配版用户安全:非对称加密。使用RSA密钥对,前端保留公钥文件,服务器后端保留私钥文件,每次登录时,前端使用公钥对密码进行加密,后端使用私钥解密,乍一看,这个应该挺安全了,毕竟使用公钥加密后,每次加密后得到的字符串都是不一样的;但是只是不一样,并不是不能用!如果攻击者拿着这个用户名和公钥加密后的密码直接调用你的登录接口,一样能登录成功,并获得授权令牌。
高配版用户安全:Token令牌。用户每次登录时,由服务端生成一个随机密钥对,将公钥返回给前端,私钥保存到服务器,并设置该密钥对的有效期为30分钟(有效时间大家随意),用户登录的时候,要求前端对用户的明文密码进行公钥加密后传给后端,然后后端用私钥对密码进行解密,然后与数据库保存的密码进行匹配,登录成功之后,服务器立即清除这个密钥对。这样即使攻击者拦截到了加密后的密码,并用这个加密后的密码再次伪造登录,也无法成功。

6.防止数据篡改、数据伪造

当请求路由到黑客这边的时候,截获数据包,然后也不需要登录,反正账号密码都是对的,token也是对的,那么把数据包的字段改改,搞破坏就可以了。

如何解决可以看这篇:

HTTPS 的加密过程 详解-CSDN博客

 “数字指纹“是HTTPS能确保数据完整性和防篡改的根本原因。(它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的内容信息其摘要必定一致。)

“数字签名”保证消息不会被冒充、不会被整个替换。

5.参考

原文链接:https://blog.csdn.net/weixin_42023666/article/details/89706659

原文链接:面试官:设计一个安全的登录都要考虑哪些?我一脸懵逼。。-CSDN博客

相关文章:

用户登录安全是如何保证的?如何保证用户账号、密码安全?

1.HTTP协议直接传输密码(无加密) 前端 直接发送HTTP请求(无加密),攻击者可直接捕获网络包,看到下面的明文信息 因此,使用HTTP协议传输会直接暴露用户敏感信息。 2.HTTPS协议直接传输密码&…...

Java 写一个可以持续发送消息的socket服务端

前言 最近在学习flink, 为了模仿一个持续的无界的数据源, 所以需要一个可以持续发送消息的socket服务端. 先上效果图 效果图 socket服务端可以持续的发送消息, flink端是一个统计单词出现总数的消费端,效果图如下 源代码 flink的消费端就不展示了, 需要引入一些依赖和版本…...

Ubuntu2204搭建ceph17

Ceph 环境初始化搭建Ceph 本次实验基于VMware17 节点IPstorage01192.168.200.161storage01192.168.200.162storage01192.168.200.163 环境初始化 初始化基础环境,三节点执行 #!/bin/bash# 定义节点信息 NODES("192.168.200.161 storage01 root" "…...

Druid 面试题及答案整理,最新面试题

Druid连接池在项目中有哪些优势? 1、高性能: Druid连接池在性能方面进行了大量优化,可以快速回收和分配数据库连接,减少数据库访问延迟。 2、实时监控: 提供Druid Monitor监控功能,可以实时监控数据库访问性能和连接池状态,便于及时发现和解决问题。 3、扩展性强: 支持…...

数据库基础与安装MYSQL数据库

一、数据库管理系统DBMS 数据库技术是计算机科学的核心技术之一,具有完备的理论基础。使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据 1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问 2.可以…...

昇思25天学习打卡营第18天| DCGAN生成漫画头像

DCGAN,全称深度卷积对抗生成网络(Deep Convolutional Generative Adversarial Networks),是一种通过对抗训练生成图像的技术。它在判别器和生成器中都使用了卷积和转置卷积层。 训练分为两个部分:训练判别器和训练生成…...

【面试八股文】计算机操作系统

参考:大佬图解文章 → 小林coding 简介:之前在学习小林大佬的八股文时,摘录了一些个人认为比较重要的内容,方便后续自己复习。【持续更新ing ~💯】 注:加五角星标注的,是当前掌握不牢固的&…...

宝塔Wordpress 插件 Redis object cache 导致内存很高 80%以上的原因和解决

查看内存前X 使用以下命令查看前10,修改10数字即可查看前X ps aux | head -1;ps aux |grep -v PID |sort -rn -k 4 | head -10 查看cpu占用 查看前10 ps aux | head -1;ps aux |grep -v PID |sort -rn -k 3 | head -10 原因是 4GiB 内存的服务器,Redis会…...

node解析Excel中的考试题并实现在线做题功能

1、背景 最近公司安排业务技能考试,下发excel文件的题库,在excel里查看并不是很方便,就想着像学习驾考题目一样,一边看一边做,做完之后可以查看正确答案。 2、开始分析需求 题目格式如下图 需求比较简单,…...

怎么降低美国服务器硬盘故障率?

要降低硬盘故障率,首先需要了解其产生的原因,常见的美国服务器硬盘故障原因包括温度过高、振动过大、电流不稳定、质量问题等。对于美国服务器而言,由于其运行环境可能存在差异,如温湿度变化大、电力供应不稳定等,这些…...

Java---后端事务管理

代码世界聚眸光,昼夜敲盘思绪长。 算法心间精构建,编程路上细思量。 屏前架构乾坤定,键上飞驰智慧扬。 默默耕耘成果现,创新科技铸辉煌。 目录 一,概念 二,Spring事务管理 三,rollbackFor事务回…...

Leetcode 3223. Minimum Length of String After Operations

Leetcode 3223. Minimum Length of String After Operations 1. 解题思路2. 代码实现 题目链接:3223. Minimum Length of String After Operations 1. 解题思路 这一题还是比较简单的,其实就是想明白对于任何一个字符,如果其个数在3个或以…...

oops使用笔记

oops-plugin-excel-to-json 使用 gitee上的文档图片不可见 参考 > https://forum.cocos.org/t/topic/156800 配置,打开“项目设置”,拖动到最下面,有一个"Excel to Json",前3项采用默认配置吧Excel, 默认的Excel目录是与assets平级的excel目…...

redistemplate介绍与演示

redistemplate是一个用于在Redis中存储和检索数据的模板库。它提供了一组简单易用的函数和接口,使开发者能够更方便地使用Redis进行数据操作。 使用redistemplate,你可以实现以下功能: 存储和检索数据:redistemplate提供了存储和…...

代谢组数据分析(十五):基于python语言构建PLS-DA算法构建分类模型

介绍 本教程描述了一个具有二元分类结果的研究的典型代谢组学数据分析工作流程。主要步骤包括: 从Excel表格导入代谢物和实验数据。基于汇总QC的数据清洗。利用主成分分析可视化来检查数据质量。两类单变量统计。使用偏最小二乘判别分析(PLS-DA)进行多变量分析,包括: 模型…...

任务3 git基础知识(主要是pr的笔记)

任务要求 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/task.md 文档 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Git/readme.md 任务 任务1:提交PR https://github.com/InternLM/Tutorial/pull/1242 任务2:实践…...

三相PWM整流器滞环电流控制仿真matlab simulink

1、内容简介 略 88-可以交流、咨询、答疑 2、内容说明 略 三相PWM整流器已广泛应用工业与电气控制领域电流控制技术决定着三相PWM整流器系统的控制性能。综合比 较了各种电流控制方法应用较多的滞环比较…...

AVL树超详解上

前言 学习过了二叉树以及二叉搜索树后(不了解二叉搜索树的朋友可以先看看这篇博客,二叉搜索树详解-CSDN博客),我们在一般情况下对于二叉搜索树的插入与查询时间复杂度都是O(lgN),是十分快的,但是在一些特殊…...

spring boot 实现token验证登陆状态

1、添加maven依赖到pom.xml <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId>…...

【.NET全栈】ASP.NET开发Web应用——用户控件和绘图

文章目录 前言一、用户控件1、创建用户控件2、使用用户控件3、在web.config中注册用户控件4、用户控件中公开属性5、用户控件事件6、动态加载用户控件 二、动态绘图1、基本绘图2、绘制一个自定义的图片3、在Web页面放置自定义图片4、图片格式和质量5、一个Web绘图示例程序 前言…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...