欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

简单的网站登录加密

来源:本站整理 作者:佚名 时间:2017-01-05 TAG: 我要投稿

0x01背景:
最近有关数据泄露的新闻频发,于是本小白就尝试在javaweb开发中做一个简单的数据库加密,记录过程如下。
0x02操作环境:
Windows
MyEclipse,MySQL,XAMPP(用来将MySQL可视化,搭建服务器)
WireShark
0x03哪里存在安全隐患?
·建立数据库如图:

最基本的登录界面的数据流程,是由客户端通过浏览器发送页面接收的stuid,stupwd数据到服务器,然后服务器将数据与logindemo数据库中stuinfo表的各字段数据进行比较,最后将比较结果传回服务器再由服务器发送返回数据包return比较结果,再在应用层的浏览器页面中显示响应结果。
整个流程当中,最显而易见的安全隐患就存在于数据库和传输过程当中。
上图很明显的可以看出,在未考虑安全性的数据库中,敏感字段比如密码、身份证号等都是明文,一旦被“脱裤”,黑客可以直接获取所有的个人信息。
·使用WireShark抓取传输的数据:
-添加本地路由:
在传输过程当中,由于是自己写的工程运行在自己的主机上,所以数据会从本地发出再回到本地,要先给WireShark添加抓取本地回环路径数据包的路由:

-简易登陆界面:

-通过WireShark抓包:

可以看到,在传输过程当中只要有任何的监听者,明文的传输数据就会直接被窃取,而黑客则能够冒充你登录系统干任何事。
0x04加密非安全模块:
·数据库部分:
既然我们看到了在数据库存储与数据传输中直接使用明文的危险性,那么我们下一步就来看看如何加密使两部分明文都变成密文。
这里我们以常用的加密算法SHA-1为例(当然你也可以使用其他加密算法或函数甚至多层加密):
-在数据库中执行SQL语句:

为防止暴力破解工具的强大密码库对单一的加密方式进行快速破解,这里采用了加盐处理将stupwd和stuid连接加密。
可以看到数据库中的密码字段变成了这样:

然而加密了数据库摘要后,我上文提到过,服务器接收应用层的数据要与数据库中数据进行比较,而现在数据库里是加密过的密文,而传过来的值却是明文。
-相应的,在jsp中我们也要修改部分代码完成加密后的字段校验:
--先写一个工具类(DigestUtil.java),用以得到stupwd加密后的值:
--同时我们也需要用到一个将字节数组转化成字符串的类:


--然后更改jsp中的代码:

·传输过程中:
这里指的是在浏览器发送数据之前就将数据加密,这里需要用到各种加密算法或函数的js框架,现在每一种加密方式都可以google到很多开源的js框架。
我这里随意百度了一个脚本的代码将它保存添加到工程目录下,并添加到index.jsp页面中。
编写一个函数toSHA1()用来将输入框中输入的密码转换为SHA1加密后的密文:

Ok,最后一步,为登陆button添加一个鼠标点击事件onclick=”toSHA1()”,大功告成!
啊,让小白写代码简直痛苦T_T不过搞出来超开心哈哈哈!小白一枚,期待各位老司机指点!
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载