科技知识动态:javascript - 有什么办法避免网页被嗅探密码(中间人攻击)?

导读 跟大家讲解下有关javascript - 有什么办法避免网页被嗅探密码(中间人攻击)?,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴

跟大家讲解下有关javascript - 有什么办法避免网页被嗅探密码(中间人攻击)?,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说javascript - 有什么办法避免网页被嗅探密码(中间人攻击)?,小编也收集到了有关javascript - 有什么办法避免网页被嗅探密码(中间人攻击)?的相关资料,希望大家看到了会喜欢。

中间人攻击的方法(别用来做坏事哦):Ubuntu 14.04 在Wifi环境下实施中间人攻击偷取用户名和密码嗅探的结果是:

针对几个著名的IT企业进行测试:可以抓到明文密码:163邮箱,京东,12306,Acfun可以抓到前端加密后的密码:百度贴吧,淘宝手机版不可以抓:QQ邮箱,淘宝电脑版,Bilibili

然后是几乎所有的小网站都不带https的,可以随便抓本博客是带有https小绿锁的哦~(虽然没什么卵用)

针对第二种情况,虽然抓不到明文密码,但是可以抓到Cookie,通过Cookie也是可以登录的第三种情况是连网页都打不开 QAQ

使用HTTPS和在前端用JavaScript加密密码之后可以在一定程度上防止嗅探密码,但是即使你的Cookie是HTTP Only的也是能被嗅探到的。那么怎样才能防止中间人攻击嗅探到密码?或者说像BiliBili这样的网站使用的是什么黑科技?

回复内容:

中间人攻击的方法(别用来做坏事哦):Ubuntu 14.04 在Wifi环境下实施中间人攻击偷取用户名和密码嗅探的结果是:

针对几个著名的IT企业进行测试:可以抓到明文密码:163邮箱,京东,12306,Acfun可以抓到前端加密后的密码:百度贴吧,淘宝手机版不可以抓:QQ邮箱,淘宝电脑版,Bilibili

然后是几乎所有的小网站都不带https的,可以随便抓本博客是带有https小绿锁的哦~(虽然没什么卵用)

针对第二种情况,虽然抓不到明文密码,但是可以抓到Cookie,通过Cookie也是可以登录的第三种情况是连网页都打不开 QAQ

使用HTTPS和在前端用JavaScript加密密码之后可以在一定程度上防止嗅探密码,但是即使你的Cookie是HTTP Only的也是能被嗅探到的。那么怎样才能防止中间人攻击嗅探到密码?或者说像BiliBili这样的网站使用的是什么黑科技?

B站 dologin 表单:都是纯HTTP请求拦截很轻松

真正防止中间人除了HTTPS不要想别的,已经被无数的人证实过了。js加密纯粹掩耳盗铃一叶障目的事。

act:logingourl:https://passport.bilibili.com/login/dologinkeeptime:2592000userid:asfdpwd:caGoN962DTSWqluWDKtUfj+l5RfDJEVQ7+y963RH/pWHs7xpJh/0mhSv73ma6TF8pxUuNiOqis6YQKGJYK1bTdvZBISbro4Iv2L9S0FWz8MF79I8Pq36uWdSyYaaTFTHOf2pn1UXWufqB/xCc4Jltl3unMNF26M2u7CFI//V2SQ=vdcode:asdf

关键JS代码

window.$ = require("jquery"); require("jquery-autocomplete"); var popup = require("popup"); var qrcode = require('qrcode'); var mng = require("mng"); var crypt = require("jsencrypt"); <<<<<<<<< require("jvalidate")($); var captchaUrl = '/captcha';

https://static-s.bilibili.com/passport/seajs/plugin/jsencrypt.min.js

/** * 加密passwd,返回加密后的passwd,加密失败返回null * @param passwd * @returns {*} */ function encryptPassword(passwd) { if (passwd.length >= 88) { return passwd; } var getKeyUrl = '/login?act=getkey'; mng.doGet(getKeyUrl, null, function (result) { if (result && result.error) { popup.alert.show('系统提示', '登录失败,服务端出现异常。'); passwd = null; } else { var jscrypt = new crypt.JSEncrypt(); jscrypt.setPublicKey(result.key); var _encPwd = jscrypt.encrypt(result.hash + passwd); passwd = _encPwd; } }); return passwd; }

网络协议学得不怎么好,抛砖引玉这个是 劫持了 TCP/IP 的流量吧, HTTP本来就是明文的,在HTTP协议上是做不了什么的,只能上HTTPS猜测是第三种情况根本就没有给 HTTP的登录入口,要么HTTPS,要么就没法登录。

丢cookie没什么好办法,防丢密码可以考虑以下方法(该例子适用于数据库中的用户密码也是采用的md5加密):1- 生成表单时产生一个随机key,这个key也同时保存在服务端(就像图形验证码)2- 提交表单时先把密码md5,然后与key连接,再次md5,然后发送3- 服务器端根据用户名取得密码,密码与key连接后md5并与提交的密码对比

来源:php中文网

免责声明:本文由用户上传,如有侵权请联系删除!