在讨论这个问题之前,我先假设一个场景,我相信这个场景也适用于正在看该文章的老兄。现在IT公司里从事Java研发的开发者居多,我相信大部分人都会有iteye的账号,我们假设在同一个公司里有这们两个人A和B,A和B因为某种原因积怨很深,A一直想找机会整下B出下恶气,A偶然发现B有写博客的习惯,A决定把B写的所有博客都删掉,让他多年的技术沉淀打水漂。A想到了用ARP欺骗+嗅探数据包的方式窃取B的登陆用户名和密码。
ARP欺骗原理:
主机在两种情况下会保存、更新本机的ARP缓存表,
1. 接收到“ARP广播-请求”包时
2. 接收到“ARP非广播-回复”包时
从中我们可以看出,ARP协议是没有身份验证机制的,局域网内任何主机都可以随意伪造ARP数据包,ARP协议设计天生就存在严重缺陷。
假设局域网内有以下三台主机(其中GW指网关),主机名、IP地址、MAC地址分别如下:
主机名 IP地址 MAC地址
GW 192.168.0.1 01-01-01-01-01-01
PC02 192.168.0.2 02-02-02-02-02-02
PC03 192.168.0.3 03-03-03-03-03-03
在正常情况下,主机PC02与GW之间的数据流向,以及它们各自的ARP缓存表如下图所示:
A用计算机PC03首先向B的计算机PC02发送了一个ARP数据包,作用相当于
告诉PC02:“嘿,我是192.168.0.1,我的MAC地址是03-03-03-03-03-03”,接着他也向网关发送了一个ARP数据包,作用
相当于告诉网关:“嘿,我是192.168.0.2,我的MAC地址是03-03-03-03-03-03”。于是,主机PC02与GW之间的数据流向,
以及它们各自的ARP缓存表就变成如下图所示:
ARP欺骗之后,B与网关通信的数据都会经过A的计算机,即A已经掌控了它们之间的数据通讯。A在捕获了一段时间的数据包开始分析数据包,找到了B登陆Iteye用户名和密码,如图
解决方案:
-
将密码在发送到服务端之前进行加密,如MD5
-
用Https协议传输用户名和密码。
分享到:
相关推荐
这是我在iteye网站的技术博客
NULL 博文链接:https://itshu.iteye.com/blog/1754672
NULL 博文链接:https://enefry.iteye.com/blog/986651
最新的ITeye月刊,覆盖各个It的行业最新信息,了解最新的咨询。
NULL 博文链接:https://jiangtie.iteye.com/blog/1003878
Hibernate 缓存 深入 详解 ITEye
iteye.com 自动留言交友推广的小工具 博文链接:https://380071587.iteye.com/blog/1931124
javaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘) - Hibernate - Java - ITeye论坛.mhtjavaMD5加密及登录验证(备忘
NULL 博文链接:https://coolzhi.iteye.com/blog/614524
博文链接:https://nciky1984.iteye.com/blog/186416
ITeye新闻月刊
简易用户注册登录 JSP+Servlet+mysq l!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
自动登录
ITeye Java编程 Spring框架 AJAX技术 Agile敏捷软件开发 ruby on rails实践 - ITeye做最棒的软件开发交流社区.files\homepage.css
iteye博客抓取 网页解析 关键字提取 jsoup解析网页 包含数据库文件
ssh三大框架的用户注册和登录
NULL 博文链接:https://javaeedevelop.iteye.com/blog/1687630
完整的程序,提供给广大程序爱好者使用,大家参考,使用,修改
在linux添加新用户,添加密钥,添加密钥添加密钥
注册/登录验证(基本表单验证及ajax同步验证)注册/登录验证(基本表单验证及ajax同步验证)