一、我们首先通过一个简单的HTML登陆例子去了解一下用户的信息是否安全

<form action = "http://localhost:8080/Application/login" method = "POST">用户名:<input name="username" type="text" />密码:<input name="password" type="password" /><button type="submit">登陆</button>
</form>

form表单会在提交请求时,服务器会获取form中input标签存在name、password的属性,作为HTTP请求的body中的参数传递给后台,进行登录校验。

执行登陆之后,我们可以通过Chrome或者FireFox开发者工具捕获,需开启Preserve log。

可以发现即便password字段是黑点,但是本机仍以明文的形式截获请求。

二、HTTP协议传输直接暴露用户密码字段

在网络传输过程中,被嗅探到的话会直接危及用户信息安全,以Fiddler或Wireshark为例,发现捕获的HTTP报文中包含敏感信息:

三、HTTPS能保证用户信息安全吗?

https://blog.csdn.net/weixin_41480687/article/details/106327531

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

想想HTTPS也不能一定保障用户密码信息,那么就应该考虑在应用层之上再继续对密码进行保护,也就是编写代码来进行控制,而不依赖特定协议,比较容易想到的就是利用不可逆加密散列函数MD5(string),用户在注册输入密码的时候,就存储MD5(password)值,并且在WEB端先进行MD5(password),然后将密码传输至后台,与数据库中的密文进行比较(PS:MD5函数在指定位数的情况下,对相同字符串运算值相同)。

五、HTTP请求被伪造

加密登录成功了。但是,当我们庆祝密码安全的时候,发现账户的钱突然不翼而飞。这是为什么呢?黑客却笑的很开心:因为他们并不一定要获取到你的密码明文,如果直接截获你的密码密文,然后发送给服务器不是一样可以登录吗?因为数据库里的不也是MD5(password)的一样的密文吗?HTTP请求被伪造,一样可以登录成功,从而攫取其他的数据或者转走余额。

这怎么办?其实并不难,有很多种解决方法?其实原理都是类似的:那就是服务器缓存生成随机的验证字段,并发送给客户端,当客户端登录时,把这个一并字段传给服务器,用于校验。

5.1 方案一:验证码

MVC场景。控制器将把数据的Model封装到View中,这种存在Session的连接方式,允许了在Session中存取信息。

那么我们可以利用一些开源的验证码生成工具,例如JAVA中的Kaptcha,在服务端存放生成一个验证码值以及一个验证码的生成图片,将图片以Base64编码,并返回给View,在View中解码Base64并加载图片,并于用户下次登录时再进行比对。

5.2 方案二:token令牌

前后端分离场景。现在非常流行的前后端分离的开发模式大大提高了项目的开发效率。职责、分工明确。

但是由于HTTP是无状态的(就是这一次请求并不知道上一次请求的内容),当用户登录时,根据用户的username作为key,生成随机令牌(例如UUID)作为value缓存在Redis中,并且将token返回给客户端,当客户端登录时,将完成校验,并且删除Redis中的那条缓存记录。

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

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

六、注意传输的数据被篡改!

密码也加密了,黑客看不到明文了。加上Token了,登陆过程也没法再被截获重放了。可是想想这种情况,你在进行某宝上的网络支付,需要账号,密码,金额,token这四个字段进行操作,然后支付的时候你付了1块钱买了一袋包邮的小浣熊干脆面,某宝结算结束后,你发现你的账户余额被扣了1万元。这又是怎么回事呢?

因为即便黑客不登录,不操作,一样要搞破坏:当请求路由到黑客这边的时候,截获数据包,然后也不需要登录,反正账号密码都是对的,token也是对的,那么把数据包的字段改改,搞破坏就可以了,于是把money改成了1万,再传给服务器,作为受害者就莫名其妙踩了这个坑。可这该怎么解决呢?其实原理类似于HTTPS里的数字签名机制,首先科普下什么是数字摘要以及数字签名:

6.1 什么是“数字摘要”

我们在下载文件的时候经常会看到有的下载站点也提供下载文件的“数字摘要“,供下载者验证下载后的文件是否完整,或者说是否和服务器上的文件”一模一样“。其实,数字摘要就是采用单项Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的内容信息其摘要必定一致。

因此,“数字摘要“叫”数字指纹“可能会更贴切一些。“数字摘要“是HTTPS能确保数据完整性和防篡改的根本原因。

6.2 数字签名--水到渠成的技术

假如发送方想把一份报文发送给接收方,在发送报文前,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的”签名“和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用密钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认报文是从发送方发送且没有被遗漏和修改过!

这就是结合“非对称密钥加解密”和“数字摘要“技术所能做的事情,这也就是人们所说的“数字签名”技术。在这个过程中,对传送数据生成摘要并使用私钥进行加密地过程就是生成”数字签名“的过程,经过加密的数字摘要,就是”数字签名“。

因此,我们可以在WEB端对之前案例中提到的username+MD5(password)+token通过签名,得到一个字段checkCode,并将checkCode发送给服务器,服务器根据用户发送的checkCode以及自身对原始数据签名进行运算比对,从而确认数据是否中途被篡改,以保持数据的完整性。

七、总结

看似非常简单的WEB登录,其实里面也存在着非常多的安全隐患。这些安全完善的过程是在一个实际WEB项目中遇到的,上面的分析演化是在应对项目安全的检查中所提出的解决方案,多少会有很多不足的地方,希望一起交流探讨,共同进步!

参考链接:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247488249&idx=1&sn=b5f6460bec94d5c47d836fa8bb9499de&chksm=ebd62dd5dca1a4c3b42644aa3e7b3e894c0acedef24de8c69c8a2ee377afb8027e267a7f055b&scene=0&xtrack=1#rd

对Web登录全面认识相关推荐

  1. WEB登录H3C模拟器

    思路:先将路由器与本地网卡绑定,然后将本地网卡与路由器接口ip设置在同一网段,在路由器上建立本地用户,最后登录就OK了.                        1.查看本机网卡的序列号,在CM ...

  2. Web登录很简单?开玩笑!

    以下文章来源方志朋的博客,回复"666"获面试宝典 本文通过 Web 登录的例子探讨安全问题,登录不仅仅是简单地表达提交和记录写入,其安全问题才是重中之重. 1. 一个简单的HTM ...

  3. 网络设备Web登录检测工具device-phamer

    网络设备Web登录检测工具device-phamer 为了便于管理和维护,大部分网络都提供了Web管理接口.Kali Linux提供了一款专用检测工具device-phamer.该工具可以批量检测IP ...

  4. 拒绝平庸--浅谈WEB登录页面设计

    用户活跃度是检验产品成功与否的重要指标之一,传统行业的商家极为重视门面的装潢,因为一个好的门面可以聚集人气,招揽更多的顾客.古时候的大户人家院子门口的石狮子或其他的摆件的摆放极为讲究,有一定的风水学说 ...

  5. web登录界面设计_出色的Web界面设计的7条规则

    web登录界面设计 When you work on a website or on the design of web pages, remember that their success is n ...

  6. 拒绝平庸——浅谈WEB登录页面设计

    用户活跃度是检验产品成功与否的重要指标之一,传统行业的商家极为重视门面的装潢,因为一个好的门面可以聚集人气,招揽更多的顾客.古时候的大户人家院子门口的石狮子或其他的摆件的摆放极为讲究,有一定的风水学说 ...

  7. 华为S5700S-52P-LI-AC千兆网管交换机web登录界面配置

    研究一下午,包装附的说明书根本就是错误的,通过技术售后和官方的文档结合,总算可以登录交换机的web管理界面. 首先需要使用通讯控制线缆(包装中附)连接电脑和交换机,一头接交换机的Console口,一头 ...

  8. ensp使用web登录防火墙

    ensp防火墙开启web服务,使用web登录管理界面 一.配置Cloud 借助ensp"云朵"连接VBox网卡,然后使用"云"连接防火墙.相当于使用vbox网卡 ...

  9. K3ERP web登录问题解决

    1.HR WEB登录 1.1 问题现象: 登录报错:Select Fvalue From t_SystemProfile Where Fcategory='base' And Fkey='Servic ...

  10. 使用Web登录防火墙设备

    Web页面配置: 查看登录名和密码 [FW1]aaa //配置AAA认证 [FW1-aaa]manager-user admin //配置用户名 [FW1-aaa-manager-user-admin ...

最新文章

  1. 【使用CMake组织C++工程】2:CMake 常用命令和变量
  2. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件
  3. ASP.NET分页存储过程自定义用户控件
  4. python | np.eye()函数
  5. 配置 Windows 环境变量的方法
  6. leetcode 209. Minimum Size Subarray Sum | 209. 长度最小的子数组(Java)
  7. .NET Core 3.0 中的新变化
  8. android 运行在ui县城,Android基础:在UI线程中运行代码
  9. 基于相关性分析系统性能瓶颈
  10. origin画图_3分钟浏览,Origin绘图中的12个经典问题集锦,早看早知道,躲坑没烦恼!!!...
  11. oracle表空间管理图形界面,Oracle表空间管理和优化
  12. python可视化利器Yellowbrick实践
  13. canvas应用之各种游戏转盘
  14. 手动保存刷新微星主板BIOS图解教程
  15. IOS AirPrint功能
  16. 矢量绘图控件VectorDraw系列2021年初最新发布!性能大幅度提升 | 附下载
  17. 色彩心理学:为什么快餐店不适合等人?
  18. NAT转换技术(SNAT、MASQUERADE、DNAT策略)及代理服务(squid服务)
  19. [前端面试题][‘1‘,‘2‘,‘3‘].map(parseInt)
  20. webstorm配置和使用

热门文章

  1. 通俗解释glLoadIdentity(),glPushMatrix(),glPopMatrix()的作
  2. Ethereum笔记(一)
  3. 【数据结构与算法】八大排序
  4. Favorite Setting
  5. qtp中type方法的按键常量
  6. 优秀项目经理和PMO管理的六脉神剑
  7. STM32标准库和HAL库的区别
  8. HTML文本框参考样式及常见操作技巧大全
  9. html input文本框样式,css设置input文本框样式代码实例_html/css_WEB-ITnose
  10. html文本框样式大全,HTML文本框样式(示例代码)