V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zxCoder
V2EX  ›  问与答

后台管理页面安全

  •  
  •   zxCoder · 2020-10-26 21:32:48 +08:00 · 1668 次点击
    这是一个创建于 1275 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己的博客,/admin.html 是后台管理页面,没有 https,有什么方法可以尽可能地保障帐号安全

    16 条回复    2020-10-27 14:24:13 +08:00
    ysc3839
        1
    ysc3839  
       2020-10-26 21:39:35 +08:00 via Android
    自己实现一套 TLS ?不过相比之下更建议使用 https 。
    whywhywhy
        2
    whywhywhy  
       2020-10-26 21:43:17 +08:00
    不用账号密码,都用第三方扫码登录即可。
    taogen
        3
    taogen  
       2020-10-26 21:46:02 +08:00 via Android
    明文传输怎么保证安全
    redtea
        4
    redtea  
       2020-10-26 21:46:48 +08:00 via iPhone
    IP 限制
    billlee
        5
    billlee  
       2020-10-26 21:50:25 +08:00
    指允许 127.0.0.1 访问,然后 ssh 隧道
    renmu123
        6
    renmu123  
       2020-10-26 23:17:33 +08:00 via Android
    ip 白名单即可(其实你搞个复杂的密码就可以了
    tuding
        7
    tuding  
       2020-10-26 23:37:55 +08:00 via Android
    路径换一下吧,/adm1n.html 。再一个限制 IP
    kaiki
        8
    kaiki  
       2020-10-26 23:55:51 +08:00
    后台地址改成动态的,根据 index.html?key=xxx,这个 key 你本地写一个工具根据时间加盐生成,服务端验证地址对不对,不对直接 403 就行。
    误差 1 分钟以内就行
    nuk
        9
    nuk  
       2020-10-27 00:57:01 +08:00
    js 版本的 http-digest
    lzxz1234
        10
    lzxz1234  
       2020-10-27 09:24:51 +08:00
    fail2ban + 两步验证
    angryfish
        11
    angryfish  
       2020-10-27 09:26:49 +08:00 via iPhone
    没事,没人嗅探你密码的。反而,你要注意一下密码强度
    clf
        12
    clf  
       2020-10-27 10:04:32 +08:00
    使用二步验证+IP 限制
    nnnToTnnn
        13
    nnnToTnnn  
       2020-10-27 10:50:06 +08:00
    @ysc3839 自己在怎么实现 TLS,也无法阻止一个问题,就是 注入 JS 拦截用户信息。 因为在客户端得不到保证,之所以 HTTPS 安全,是因为浏览器做了保证,把你的代码放在一个沙盒里面,加密的 HTML JS CSS 等等内容,如果说是自己手动实现 TLS 在发起 get 请求的时候,你是无法拦截到具体的内容,同样还是存在中间人攻击。
    ysc3839
        14
    ysc3839  
       2020-10-27 13:06:40 +08:00 via Android
    @nnnToTnnn 我说的“自己实现 TLS”,是包含了 TLS 的证书认证机制的,既然 TLS 可以解决这个问题,自己实现时也用同样的方法就好了。
    nnnToTnnn
        15
    nnnToTnnn  
       2020-10-27 13:16:41 +08:00
    @ysc3839 只要你还是建立在 http 协议上,那么即使有了证书认证机制,仍然无法避免被中间人


    例如 http 报文


    ```
    GET / HTTP/1.1
    Host: www.baidu.com
    Connection: keep-alive
    Cache-Control: max-age=0
    DNT: 1
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Sec-Fetch-Site: none
    Sec-Fetch-Mode: navigate
    Sec-Fetch-User: ?1
    Sec-Fetch-Dest: document
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,en-US;q=0.6,ja;q=0.5
    ```
    即使你在此基础上实现 TLS, 但是本质上还是采用 HTTP 协议,那么我完全可以这样拦截

    ```

    原来的请求方式

    浏览器 -> 发送 GET 请求 -> 自己实现的 TLS 封装的数据 -> 后端校验数据

    拦截之后的请求方式

    浏览器 -> 拦截发送 GET 请求 -> 植入 JS 脚本代码 -> 跳转到钓鱼网站


    根本就不走你之前的后端服务器。
    ```


    浏览器为什么会安全,因为浏览器拿到了原始报文,通过 浏览器 -> 后端服务器,中间是加密的,意味要么成功,要么失败,而自己去实现 TLS, 无非是和鸵鸟一样把头埋在沙子里面,认为自己安全了,实际上并不安全
    ysc3839
        16
    ysc3839  
       2020-10-27 14:24:13 +08:00 via Android
    @nnnToTnnn 是我理解错你的话了,在浏览器中用脚本实现的话确实不能保证安全。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5286 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:59 · PVG 13:59 · LAX 22:59 · JFK 01:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.