利用POST进行用户登录的安全问题剖析

POST是提交数据的方式,比较常见的POST提交数据的方式有四种:

1、application/x-www-form-urlencoded(浏览器支持):主要向服务器提交用户隐私相关的信息

2、multipart/form-data(浏览器支持)向服务器上传小文件,一般不超过2M

3、application/json(浏览器不支持):向后台服务器提交结构化数据

4、text/xml(浏览器不支持):向后台服务器提交结构化数据


本文主要介绍第一种提交数据的方式:如何用POST进行用户数据安全提交,保护用户隐私。应用实例:登录

用户登录操作常用的有两种方式,GET和POST。

下面就用Firefox浏览器详细解析用户登录的这两种方式,为什么要选择POST,怎么利用POST才能让用户数据更安全!

GET登录:

登录后,我们会在url地址栏中看到登录的用户名和密码,如此一来便毫无安全可言。


不仅如此,在控制台的服务器访问日志中能够看到详细的访问信息!

使用GET方法所有参数都包含在URL中,所有访问网站的URL都会记录在服务器的访问日志中。

而服务器的访问日志正是黑客攻击的重点对象之一!

利用GET进行用户信息登录是一种非常不安全的方式。

相比于GET而言,POST就安全得多。

POST是通过携带数据体传递用户登录信息,登录的数据并不会出现在URL和服务器访问日志中。

但这也并不十分安全,只要拦截到了传递的数据体,用户名和密码就能轻松获取。

例如:利用Firefox中的Firebug就能轻松拦截到数据体,获取用户名和密码

在关系到用户隐私的时候,要时刻遵循两个原则:

1、任何应用程序都不能在本地存储与安全相关的用户信息

2、任何应用程序在向服务器传递数据的时候,都不能直接传递与安全相关的用户信息。


要想让用户信息安全,就必须对其进行加密,让别人即便是拿到了安全信息,摆在眼前的也是一串乱码,没有半点用处


MD5是一种常用的加密方法,它是一种散列函数,利用MD5对用户信息进行加密,会增加用户信息安全性。

网上有关于MD5的第三方框架Category

利用这个第三方框架可以实现对密码进行MD5加密

加密之后的密码即便是被人拦截,也是一串经过加密的密文,而且这段密文无法反编译回明文,即便是你拿到了编译函数也无法做到反编译。

下面是经过MD5加密后打印出来的密码密文:

这一串202cb962ac59075b964b07152d234b70就是密码123的密文。

如此一来就安全到无懈可击了吗?你要是这样想那就图样图森破了。

这里介绍一个网站:

还能说什么?人家有160T的数据库,记录了24万亿条密文数据,恐怕只要你设置的密码还在人类能记住的范围内,我就能给你破解。

啥也别说了,一句话:这是一个神奇的网站。

有漏洞就要补,既然你只能破解有记录的密文,那我弄一条你没记录的不就解密不了了吗?将密码设置成非人类能记住的即可。

比如:dfKFHK83*#$!dfa>kjdakj2093978609)(&^%$+/.X\AJFkdfh276920s54568$$%*!^&!./SXKAa03-293-=29713720917ks^%$(jh628

这段密码加密后,我相信它绝对破解不了!安全是有了,但同样没人能记住这种密码,更没人设置这种密码,也很少有地方允许设置这种密码(密码一般都会限制长度)


既然人不能设置,那就在程序内给密码后面添加上!

这就是给密码加“盐”,就是给密码加点佐料(一串乱七八糟的字符)。

打印出来的密文:

在神奇的网站上解密测试:


根本解密不了了!

这样用户信息就有了安全保障。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Eclipse是一个强大的集成开发环境(IDE),可以用于开发基于Java的web应用程序。通过使用Eclipse中的Servlet程序,我们可以实现用户注册和用户登录的功能。 用户注册功能的实现: 1. 创建一个新的Servlet类,用于处理用户注册的相关逻辑。 2. 在Servlet中,创建一个处理POST请求的方法,并配置Servlet的访问路径。 3. 在处理方法中,获取用户提交的注册信息,例如用户名、密码和其他必要的信息。 4. 对用户提交的信息进行验证和校验,确保用户输入的信息符合要求。 5. 如果用户提交的信息合法,则将用户信息保存到数据库中或者其他持久化方式中。 6. 返回注册成功的页面或者提示信息,告知用户注册成功。 用户登录功能的实现: 1. 创建一个新的Servlet类,用于处理用户登录的逻辑。 2. 在Servlet中,创建一个处理POST请求的方法,并配置Servlet的访问路径。 3. 在处理方法中,获取用户提交的登录信息,例如用户名和密码。 4. 对用户提交的信息进行验证和校验,确保用户输入的信息符合要求。 5. 从数据库或者其他持久化方式中查询用户信息,并与用户输入的信息进行比对。 6. 如果用户输入的信息和数据库中的信息匹配,则标记用户为登录状态,并可以根据需要记录登录时间等信息。 7. 返回登录成功的页面或者跳转到其他需要登录才能访问的页面。 以上是利用Eclipse中的Servlet程序实现用户注册和用户登录的基本步骤。在具体实现过程中,还需要考虑异常处理、安全性等方面的问题,以确保用户信息的安全和程序的稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值