架构设计---用户加密处理

news2024/11/15 2:09:39

前言:

在互联网各种安全问题中,最能引发话题,刺激大众神经的就是用户的泄密问题,数据库被拖库导致所有的数据泄露,这种系统安全问题涉及的因素可能有很多,大部分和开发软件的程序员没有关系,但是因为数据库被泄露,黑客直接获得了用户的密码等敏感问题,用户密码泄露就是程序员的问题了。

数据加解密:

通过对用户密码、身份证号码、银行卡号等敏感数据加密,保护好数据的安全,是软件安全性架构的一部分,也是程序员和架构师的责任。

软件开发过程中,主要的使用加密方法有三种,单向散列加密,对称加密和非对称加密。

单向散列加密:

用户加密通常使用单向散列加密,所谓的单向散列加密是指对一串明文信息进行散列加密,得到的密文信息是不可以被破解的,也就是说给定一个密文,即使是加密者也无法知道他的明文是什么,加密是单向的,不支持解密的操作。

单向散列加密事实上是一种Hash算法,熟悉MD5算法知道,MD5算法本身就是一种散列加密算法,单向散列算法虽然无法通过密文进行解密的处理,还原密码到明文字符串。但是如果知道了算法,就可以通过彩虹表的方法进行破解的处理,彩虹表是常用明文和密文的映射表,很多人喜欢用自己的生日做密码,其实生日的组合是非常有限的,轻易就可以建立一个生日和密文的映射表,如果黑客得到了密文,可以通过查表的方法进行得到密码的明文字符串。

因此在实践中,使用单向散列算法进行加密的处理,还需要在计算的过程中加点“salt”,如果黑客不知道加的“salt”是什么的话,就无法建立彩虹表,还原得到明文。

单向散列加密的主要场景就是应用到用户密码加密上,加密和密码校验过程如下:

用户在注册的时候需要输入密码,应用服务器得到密码以后,调用单向散列加密算法,对密码进行加密的处理,然后将加密文件存储到数据库中,用户下一次登录的时候,在客户端依然需要输入密码,而用户输入的密码发送到Web服务器以后,Web服务器对输入的密码再进行一次散列加密的处理,得到密文,然后和从数据库中取出来的密文进行对比处理,如果两个密文是相同的,那么用户的登录验证就是成功的,通过这种手段,可以保证用户密码的安全性,即使数据库被泄露了,也不会泄露密码。

密码进行加密的时候,需要加点“salt”,这组创景下,每个用户加密的“salt”都可以不用,比如说使用用户的ID作为“salt”,这样可以增加破解的难度。

对称加密:

顾名思义,使用一个加密算法和一个秘钥,对一段明文进行加密以后得到密文,然后使用相同的秘钥和对应的界面算法,对明文进行解密的处理,就可以得到明文。对称加密主要是用于加密的一些敏感信息,对明文进行信息传输和存储,但是在使用的时候,必要解密得到明文信息的一些场景。

比如说用户的信用卡卡号,很多互联网电商网站支持用户使用信用卡进行支付的处理,但是如果直接把信用卡号码、有效期、安全码存储在数据库中是比较危险的,所以必须对这些敏感信息进行加密的处理,然后才能保存到数据库中。但是在使用的时候又必须进行解密的处理,还原得到明文数据,才能进行正常的使用,所以这个时候就要使用对称加密算法,在存储的时候使用加密算法进行加密,在使用的时候使用解密算法进行解密的处理。

非对称加密:

所谓非对称加密就是在加密的时候使用一个加密算法和一个加密秘钥进行加密的处理,才能够得到一个密文。在这个时候,必须使用解密算法和解密秘钥进行解密才能还原到明文信息,加密秘钥和解密秘钥是完全不同的,通常加密秘钥被称为公钥,解密秘钥被称为私钥。

非对称加密的典型应用场景,就是我们常见的HTTPS,用户在客户端进行网络通讯的时候,对数据使用加密秘钥即公钥和加密算法进行加密,得到密文。到了数据中心的服务器以后,使用解密秘钥即私钥和解密算法进行解密的处理,得到明文。

由于非对称加密需要消耗的计算资源比较多,效率也比较差,HTTPS并不是每次请求响应都用非对称加密进行处理,而是先利用非对称加密进行处理,在客户端和服务器之间进行交换一个对称加密的秘钥,然后每次请求响应都用对称加密,这样,用非对称加密保证对称加密秘钥的安全,再用对称加密秘钥保证请求响应数据的安全。

使用非对称加密,还可以实现数字的签名处理,用数字签名的时候是反着来的,自己私钥进行加密,得到一个密文。但是其他人可以用公钥将密文解开,因为私钥只有自己才能拥有,所以等同于签名。一段经过自己私钥加密后的文本,文本内容就等于是自己签名认证过的了。举例,区块链其实就是使用的非对称签名。

HTTP攻击和防护:

互联网应用对外提供服务主要就是通过HTTP协议进行处理的,任何人都可以在任何地方通过HTTP协议访问互联网应用,因此HTTP攻击是黑客攻击行为中门槛最低的攻击方式了,也是最常见的一种互联网攻击,最常见的是SQL的注入攻击和XSS攻击。

SQL注入攻击:

Sql注入攻击就是攻击者在提交的请求参数里面,包含了又恶意的SQL脚本,如下:

如果在Web页面上面输入用户名称,那么就会进行提交HTTP,服务器在处理计算以后,向数据库提交SQL查询命令进行处理。但是恶意的攻击者会提交带有sql注入的字符串进行请求处理,比如,带有drop table这样类似删除数据库的操作

XSS攻击:

XSS攻击即跨站点脚本攻击,攻击者构造恶意的浏览器脚本,使其在其他用户的浏览器上运行,进而进行攻击。

攻击者发送一个含有恶意脚本的请求给被攻击者的服务器,比如通过发布微博的方式向微博的服务器发送恶意的请求,被攻击的服务器将恶意脚本存储到本地的数据库中,使其他的正常用户通过被攻击的服务器浏览信息的时候,服务器会读取数据库中含有恶意脚本的数据,并且向其展现给正常的用户,在正常用户的浏览器上执行,从而达到攻击的目的。

XSS攻击防御的主要手段是消毒的作用,检查用户提交的请求中是否含有可执行的脚本,因为大部分的攻击请求都包含JS等脚本语法,所以可以通过HTML转义的方式,对比较有危险的脚本语法关键字进行转义,比如说把“>”转义为“&gt”,HTML显示的时候还是比较正常的“>”,但是这样的脚本无法在浏览器上执行,也就无法达到攻击的目的。

由于HTTP攻击必须以HTTP请求的方式提交到服务器上面,因此可以在服务器的入口统一进行拦截,对含有危险信息的请求,比如说drop table等的信息,进行消毒转义的处理,或者直接拒绝请求处理。即设置一个Web应用防火墙,将危险进行请求隔离处理。

针对Web应用防火墙,可以进行统一的请求过滤器进行拦截处理。

小结:

硬件指令和操作系统可能会有漏洞,使用各种框架和SDK可能也有漏洞,这些漏洞从被发现,公开,官方进行修复漏洞处理,可能需要一个很长的时间,这个时间内系统可能会被黑客攻击。

这种漏洞在官方修复之前,基本没用办法进行处理的。即使数据泄露了,黑客也很难进行加密数据的处理,也能保护公司的资产数据。

加强请求的合法检查,避免主要的HTTP攻击,及时更新生产环境的各种软件版本,修复安全漏洞,提高黑客攻击的难度,使其投入产出不成比例,从而使系统可以正常安全的环境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151255.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyTorch深度学习实践】03_反向传播

文章目录1.计算图2.反向传播2.1 链式求导法则2.2 反向传播过程3.Pytorch中前馈和反馈的计算3.1 Tensor3.2 代码演示对于简单的模型,梯度变换可以用解析式表达进行手算,但是复杂模型(很多w,b)的损失函数需要挨个写解析式…

【黑马】瑞吉外卖-Day03、04笔记

瑞吉外卖Day03、04 公共字段自动填充 使用MybatisPlus实现 问题分析 代码实现 Mybatis Plus公共字段自动填充,也就是在插入或者更新的时候为指定字段赋予指定的值,使用它的好处就是可以统一对这些字段进行处理,避免了重复代码。 实现步骤…

【学习】life long learning

文章目录life long learningLLL的难点评估二、LLL的三个解法1、Selective Synaptic Plasticity选择性突触可塑性为什么会有灾难性遗忘呢?GEM2、Additional Neural Resource Allocation额外的神经资源分配packNet&CPG3、memory replyCurriculum Learninglife lon…

SAP 字段仍作为视图字段在视图中使用 | 更改表结构重新生成 CDS View「实例」

错误信息 Field ZPDAUSER-ZUSERID is still being used as a view field in view ZV_PDA_USER视图 ZPDAUSER-ZUSERID 仍作为视图字段在视图 ZV_PDA_USER 使用 错误原因 当前表被 CDS View 引用,由 CDS View 生成的「视图」已占用当前表的相关字段然而生成的视图又…

实战5:基于 Pytorch 搭建 Faster-R-CNN 实现飞机目标检测(代码+数据)

任务描述: 通过一个飞机检测的案例来对目标检测的基本概念进行介绍并且实现一个简单的目标检测方法。数据集:使用从COCO数据集抽取的飞机数据集mini-airplane,数据集中的数据均为正常的图片。https://download.csdn.net/download/qq_38735017/87374251运行环境:操作系统:l…

Day4 基于XML的Spring应用

总结java依赖注入的方式set方法注入List、map和properties的注入通过构造方法注入ref是reference的缩写,需要引用其他bean的id,value用于注入普通属性值。自定义标签和其他标签的引用自定义标签beansbeanimportalias其他标签用于引用其他命名空间1 bean的…

sqli-labs 第八关 多命通关攻略(Python3 自动化实现布尔盲注)

sqli-labs 第八关 多命通关攻略(Python3 自动化实现布尔盲注)描述判断注入类型正常输入不正常输入错误输入爆破方式的可行性铺垫函数 IF()关于 MySQL 数据类型之间转换的小小礼物(仅部分)函数 ASCII()ASCII 表(可显示字…

火山引擎 DataTester:5 个优化思路,构建高性能 A/B 实验平台

导读:DataTester 是由火山引擎推出的 A/B 测试平台,覆盖推荐、广告、搜索、UI、产品功能等业务应用场景,提供从 A/B 实验设计、实验创建、指标计算、统计分析到最终评估上线等贯穿整个 A/B 实验生命周期的服务。DataTester 经过了字节跳动业务…

vivo 故障定位平台的探索与实践

作者:vivo 互联网服务器团队- Liu Xin、Yu Dan 本文基于故障定位项目的实践,围绕根因定位算法的原理进行展开介绍。鉴于算法有一定的复杂度,本文通过图文的方式进行说明,希望即使是不懂技术的同学也能理解。 一、背景介绍 1.1 程…

2023最新连锁店软件排名,国内十大连锁店管理软件新鲜出炉!

普通的数据工具、人工管理难以满足连锁店老板们的需求,正所谓“有需求就有市场”,随着连锁店、加盟店如雨后春笋般在城市里出现,连锁店软件也越来越多。究竟哪一款连锁店管理软件,才能满足老板们的需求?小编收集了国内…

9/365 java 数组 内存

1.数组 声明: int[] a;//首选 int a[];//一般不用 创建: int[] a new int[10]; // 需指定数组大小 初始化: 静态初始化: int[] a {8,9,10}; String[] s {new String("hello"), new String("world")…

南邮研究生考试历年真题知识点总结

下边的知识点是我在做南京邮电大学考研历年真题时遇到自己不会的题时整理出来的。第九部分是做mooc课后习题时整理出来的,希望对各位同学有所帮助。 md文档网址:https://gitee.com/infiniteStars/wang-dao-408-notes/blob/master/考研笔记/南邮数据结构知…

内存函数:学习笔记7

目录 一.前言 二. memcpy模拟实现 三. memmove模拟实现 四.memcmp模拟实现 一.前言 计算机内存的实质就是以字节为编号单元的二进制序列集合,操作内存时我们应具有这样的视角。 二. memcpy模拟实现 库函数memcpy函数首部:void *memcpy( void *dest, …

量子计算机“九章”

1.中国量子计算机“九章”实现量子霸权 2020年12月,中国科学技术大学宣布该校成功构建光子量子计算原型机“九章”。“九章”是中国科学技术大学潘建伟团队、中科院上海微系统所和国家并行计算机工程技术研究中心合作完成。“九章”的名字是来源于中国历史上最重要…

算法设计与分析-分支限界法习题

7-1 布线问题印刷电路板将布线区域划分成 nm 个方格阵列,要求确定连接方格阵列中的方格a 点到方格b 的最短布线方案。在布线时,电路只能沿直线布线,为了避免线路相交,已布了线的方格做了封锁标记,其他线路不允许穿过被…

大数据开发之利剑 -- TDengine

前言 在大数据技术全球爆炸的时代,以及大数据在各行各业的实际应用,大数据的快速发展就像计算机和互联网一样,很可能成为新一轮的技术革命。数据处理、机器学习、AI等新兴技术诞生,会改变数据世界的许多算法和理论基础&#xff0c…

DAY-1 | Java数据结构之链表:删除无头单链表中等于给定值 val 的所有节点

目录 一、题干 🔗力扣203. 移除链表元素 二、题解 1、思路 2、完整代码 一、题干 🔗力扣203. 移除链表元素 二、题解 1、思路 题干的意思是,要删除链表中所有指定的元素。最暴力的方法是,依次遍历链表中的各个节点&#x…

Day3 XML方式的Spring应用

全文总结基于XML配置1、学习了bean标签,2、三种配置bean的方式:1、静态工厂;2、实例工厂和3、自定义实现factorybean1 SpringBean 的配置类inin-method 与构造方法不同,构造方法是创建对象的,等对象创建以后使用inin-m…

2023年全国最新消防设施操作员精选真题及答案

百分百题库提供消防设施操作员考试试题、消防设施操作员考试预测题、消防设施操作员考试真题、消防设施操作员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 1、对外观目测判断,下列哪种情况不应报废?(  ) A、铭牌标志脱落 B、瓶…

pyqt5加载matplotlib图形

matplotlib的图形处理非常强大。今天花了很长时间才将matplotlib图形嵌入到pyqt5中。在这里记录一下,便于以后查寻。有些可能还理解不到位。开始要导入几个模块:from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasFigur…