网站安全之密码明文传输漏洞
1. 说明问题
相信关注笔者的读者应该有看过笔者之前写过的一篇文章——《keytool的用法》.这篇博客是介绍了如何生成系统使用的证书。而这个证书是在https中使用的,对于https的地址我们不用担心密码在传输时出现漏洞,也就是被别人强制性拦截然后获取。它在传输时是会加密的。但是对于http的协议就没那么好了,如果你不做一些工作的话,密码在传输的时候,很容易被拦截工具拦截,然后就可以看到密码。比如,我们登录的用户与密码,我们是使用http协议的,那么测试时就可以使用相关的工具,拦截访问的地址,工具就可以显示出用户名与密码。这样的话,问题就会很严重,攻击都就可以轻松拿下你的系统了。为了防止这个问题,我们就需要为系统的登录信息做些加密处理。
2. 处理问题
我们可以使用开源框架提供的加密与解决的方法来处理。如果读者有兴趣的话,可以自己去查找,这里读者就不介绍了。这里要介绍的是如何自己写个加解密的方法来实现。
对于Web的系统,我们要的是前端对用户的登录信息进行加密,这样在传输的时候即使被拦截也只能看到拦截的加密后的信息。同时,我们也需要在后端对传输来的信息进行解密。所以我们需要两个文件,一个是jsp的,一个是java的。
3. 代码实现
对于项目中应该怎么处理,读者自己根据实际情况去处理。这里笔者只能给测试的代码,希望对读者可以起到作用吧。
package com.owen..util;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;import com.sun.org.apache.xml.internal.security.utils.Base64;/*** DESede对称加密算法演示* * @author zolly* */
public class DESedeCoder {/*** 密钥算法* */public static final String KEY_ALGORITHM = "DESede";/*** 加密/解密算法/工作模式/填充方式* */public static final String CIPHER_ALGORITHM = "DESede/ECB/PKCS5Padding";/*** * 生成密钥* * @return byte[] 二进制密钥* */public static byte[] initkey() throws Exception {// 实例化密钥生成器KeyGenerator kg = KeyGenerator.getInstance(KEY_ALGORITHM);// 初始化密钥生成器kg.init(168);// 生成密钥SecretKey secretKey = kg.generateKey();// 获取二进制密钥编码形式byte[] key = secretKey.getEncoded();BufferedOutputStream keystream = new BufferedOutputStream(new FileOutputStream("DESedeKey.dat"));keystream.write(key, 0, key.length);keystream.flush();keystream.close();return key;}/*** 转换密钥* * @param key* 二进制密钥* @return Key 密钥* */public static Key toKey(byte[] key) throws Exception {// 实例化Des密钥DESedeKeySpec dks = new DESedeKeySpec(key);// 实例化密钥工厂SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(KEY_ALGORITHM);// 生成密钥SecretKey secretKey = keyFactory.generateSecret(dks);return secretKey;}/*** 加密数据* * @param data* 待加密数据* @param key* 密钥* @return byte[] 加密后的数据* */public static byte[] encrypt(byte[] data, byte[] key) throws Exception {// 还原密钥Key k = toKey(key);// 实例化Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);// 初始化,设置为加密模式cipher.init(Cipher.ENCRYPT_MODE, k);// 执行操作return cipher.doFinal(data);}/*** 解密数据* * @param data* 待解密数据* @param key* 密钥* @return byte[] 解密后的数据* */public static byte[] decrypt(byte[] data, byte[] key) throws Exception {// 欢迎密钥Key k = toKey(key);// 实例化Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);// 初始化,设置为解密模式cipher.init(Cipher.DECRYPT_MODE, k);// 执行操作return cipher.doFinal(data);}/*** 进行加解密的测试* * @throws Exception*/public static void main(String[] args) throws Exception {String str = "DESede";System.out.println("原文:" + str);// 初始化密钥byte[] key = DESedeCoder.initkey();System.out.println("密钥:" + Base64.encode(key));// 加密数据byte[] data = DESedeCoder.encrypt(str.getBytes(), key);System.out.println("加密后:" + Base64.encode(data));// 解密数据data = DESedeCoder.decrypt(data, key);System.out.println("解密后:" + new String(data));}
}
说明:由于公司的保密性,给出的代码并非笔者项目中使用的。读者只要知道这个算法就行了,知道有这么一回事就行了。
网站安全之密码明文传输漏洞相关推荐
- 网站密码明文传输解决方案js+java
解决密码明文传输的方案,基本有两种解决方案 1,将项目网站全站升级为https协议(如果要更谨慎,还需要加密). 2,将密码进行加密后,在后台解密. 因项目升级https时间周期太长.将暂时替代方案改 ...
- 漏洞解决方案-明文传输漏洞
漏洞解决方案-明文传输漏洞 漏洞解决方案-明文传输漏洞 一.漏洞概述 二.利用方法和手段 三.漏洞防御解决方法 漏洞解决方案-明文传输漏洞 一.漏洞概述 敏感数据明文传输简单点来说就是当我们在网站上面 ...
- 浅谈“密码明文传输”
一:漏洞名称: 密码明文传输 描述: 明文传输一般存在于web网站登陆页面,用户名密码采取明文传输并未采取加密(注意:一些软件如BurpSuite带有可加密的暴力破解!)容易被嗅探软件截取(如果加密方 ...
- FTP-用户名密码明文传输
一.实验原理 FTP协议用于用户认证的过程中,客户端与服务器是通过明文进行交互信息的. 二.实验环境 目标主机:Win2K3 192.168.20.145 攻击主机:Kali2 192.168.20. ...
- 登录 ajax密码明文,若依框架渗透测试用户名密码明文传输问题
解决思路,前端js加密,controller层解密 1.前端加密 引入js(jsencrypt.min.js) 个人备份js function login() { $.modal.loading($( ...
- 前端JS RSA加密,PHP后端解密实现密码安全传输
在设计用户注册登陆系统的时候,密码的安全传输一直是一个需要特别引起注意的地方,很多网站包括大型网站依然还是采用明文传输密码的方式,安全隐患需要注意.当然,为了防止第三人的恶意窃听,不少网站已经启用了H ...
- 12306:候补购票服务扩大到全部列车;G Suite 漏洞:部分密码明文存储
(给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [业界资讯] 0.12306:铁路候补购票服务扩大到全部旅客列车 据12306网站消息,5月2 ...
- java web系统明文密码加密传输
最近项目PL提出系统数据越权和明文密码传输问题,涉及网络安全的问题,这让我一脸懵逼,查阅相关资料后做相关记录 1. 数据越权: 涉及重要功能需要验证用户是否当前用户操作,修改密码功能接口参数用户Id人 ...
- Linux下wireshark抓包验证telnet明文传输密码
Host-A IP:192.168.56.129 OS:RHEL5.9 32bit Service:telnet-server Host-B IP:192.168.56.128 OS:RHEL5.9 ...
- PHP密码问题陈婷代码_登录中利用JS前端加密PHP后端解密保证数据非明文传输的安全方法...
为什么要研究这个呢,因为我所在单位的信息管理部门在监控系统上发现有大量的明文账号(身份证号)和密码在传输,被告知这很不安全,索性就直接解决这个问题,利用JS前端加密PHP后端再加密来解决这个问题,保证 ...
最新文章
- 调试webservice遇到“测试窗体只能用于使用基元类型作为参数的方法”的解决办法...
- !aspxpages(即!dumphttpcontext)命令输出的解释
- mysql 删除顺序_mysql 添加字段、删除字段、调整字段顺序 转
- 如何优化增强第三方库?
- 如何将iPhone应用程序从应用程序库移动到主屏幕
- django-后台管理-笔记
- 软件测试--selenium安装使用
- 【渝粤教育】国家开放大学2018年秋季 1174t水工钢筋混凝土结构(本) 参考试题
- 初中数学知识点总结_初中数学函数知识点总结
- VC 读取usb相机
- 期权定价公式的推导(欧式)
- 复合函数求导经典例题_导数--复合函数的导数练习题
- 在线的棋牌类网络游戏java服务端实现
- 大数据模型案例库-涵盖多行业,超百个实战项目案例
- TI PMP解决方案简介
- 【从Java转C#】第八章:委托、lambda、事件
- idea中Entity实体中报错:cannot resolve column/table/...解决办法。
- 10分钟带你学习华为云数据库RDS
- VMtools的安装教程
- IT人员力求创新的15个方法
热门文章
- Java多线程深度探索
- 京沪等地11月房价半年来首涨 平价走量将成主流
- [Xamarin.Android] 儲存資料於Windows Azure (转帖)
- List求交并补集--IEqualityComparer实现
- java用url创建imageview,Android中ImageView使用网络图片资源的方法
- of python检索文献 science web_查SCI文献,不知道检索方法怎么行!
- 游戏筑基开发之环形链表及其基本功能(C语言)
- 求1--100的和 Python3实现
- docker:编排与部署小神器Compose
- 这家保险公司的第三朵云为什么选择Power?