有什么办法避免网页被嗅探密码(中间人攻击)?

发布于 2022-09-02 19:31:19 字数 756 浏览 26 评论 0

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

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

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柠檬心 2022-09-09 19:31:19

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

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

act:login
gourl:https://passport.bilibili.com/login/dologin
keeptime:2592000
userid:asfd
pwd: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;
    }
孤云独去闲 2022-09-09 19:31:19

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

巷子口的你 2022-09-09 19:31:19

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文