V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cmdOptionKana
V2EX  ›  分享创造

一个具有命令行 “手感” 的网页版密码管理器(Go 语言编写, NaCl 加密)

  •  
  •   cmdOptionKana · 2020-05-29 09:37:06 +08:00 · 2725 次点击
    这是一个创建于 1632 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mima-web

    本软件是一个有特色的密码管理器,需要由用户自行架设到一台 Linux 服务器中。 采用简单有效的 NaCl (libsodium) 加密方式(该方式以 “容易正确处理” 为最大特点), 因此可以确保加密过程得到正确处理。

    自己架设密码管理软件的好处是,拥有数据的绝对控制权。

    全原生代码

    • 后端采用 Go 语言,未使用框架,由标准库搭建
    • 不使用数据库,既免除了数据库相关设置的麻烦,又能减轻服务器负担 (不使用 sqlite, 因此编译速度不会被 cgo 拖慢)
    • 前端没有 React 、Vue,没有 JQuery,没有 Bootstrap,只有原生 HTML, JS, CSS
    • 页面非常简陋(其中 CSS 只有约 50 行,可见一斑)
    • 前后端分离,前端可根据个人需要用各种框架 /库改写,不需要修改后端
    • 后端代码非常简练,有 Go 语言基础即可轻松定制

    解决什么问题

    我有一台服务器,我想在上面安装一个密码管理工具,我希望它小巧,占用资源少, 随时可以访问,我不需要指纹解锁、自动填写等的高级功能,希望它是简单的, 使用起来的 “手感” 接近命令行。

    比如,假设有一个程序叫做 mypass,在命令行执行 mypass v2 就能复制我在 v2ex.com 的用户名到剪贴板,执行 mypass -p v2 就能复制密码到剪贴板。 (其中 v2 是 v2ex.com 的别名,由用户设定)

    但是为了方便随时随地使用,显然做成一个网站比命令行更合适,因此我做了一个简单的网站, 并且让它的使用 “手感” 接近命令行。

    命令行手感

    • 打开网站,只有一个密码框,别的啥都没有,非常简洁。
    • 输入密码进去后,只有一个搜索框。
    • 搜索框只能搜索别名,只能精确搜索,并且区分大小写。

    别名

    • 别名 (Alias) 是本软件的特色功能
    • 建议设定尽量简短的别名,比如:
      • 用 v2 表示 v2ex.com
      • 用 w 或 vx 表示微信
      • 用 jd 表示京东

    使用别名有三大好处

    1. 直接得出想要的精确条目,就像命令行一样精确,很爽

    2. 可以代替顶置功能,并且比顶置功能好用很多

    • 使用普通密码管理软件,当你记录的条目越来越多,你会希望顶置一些重要或常用的条目
    • 但顶置的条目会越来越多,逐渐失去顶置的意义
    • 于是只好从一堆顶置条目中忍痛取消一些,这个过程会增加思维负担
    • 另外,你可能不想让别人知道你上某些网站,因此使用密码管理软件时,你需要躲避旁人的目光(即使密码已隐藏,但你连网站名字都不想让人看到)
    • 只要使用别名,上述问题全部解决

    3. 轻松支持多密码

    • 比如一个网站你有登录密码、支付密码、两部验证密码等
    • 一般密码管理软件可能不支持这种情况
    • 使用别名,比如一个网站有两个密码,那就新建两个条目,然后设定相同的别名即可
    • 比如我自己的真实使用案例,输入 jd 即可得到一个列表,共两个条目,一是登录密码,一是支付密码。

    历史记录功能

    每次修改,不管修改了用户名、密码、标题还是备注,一律保留历史记录。 因此,可以尽管放心修改,绝对不用担心覆盖旧信息。

    Demo

    http://demo.ai42.xyz (密码:abc) (页面未做移动端适配)

    项目代码

    https://github.com/ahui2016/mima-web

    第 1 条附言  ·  2020-06-07 10:21:12 +08:00

    全新界面版本 http://demo.ai42.xyz/m (密码:abc)

    7 条回复    2020-06-03 23:36:50 +08:00
    dmjob2015222
        1
    dmjob2015222  
       2020-05-29 10:09:06 +08:00
    额,有点繁琐啊,还不如让浏览器记住呢
    cmdOptionKana
        2
    cmdOptionKana  
    OP
       2020-05-29 10:30:31 +08:00
    @dmjob2015222 目标用户是对安全要求稍高一些,希望对数据有绝对控制权,并且想做一些个人定制的用户……确实受众很少啦
    Cmdhelp
        3
    Cmdhelp  
       2020-05-29 10:37:49 +08:00
    手机端 iclou
    电脑端 chrome google 账户
    完美
    cmdOptionKana
        4
    cmdOptionKana  
    OP
       2020-05-29 10:57:29 +08:00
    @Cmdhelp 安全程度不一样,比如有的人手机会借给孩子玩,有的人电脑会和别人共用。(不过我设想的情景还是比较小众,大多数人是用正常工具足够了)
    raphael008
        5
    raphael008  
       2020-05-29 12:12:56 +08:00
    自己写的管理工具,一直用到现在,onedrive 同步,支持快捷键搜索快速复制账号密码,生成高复杂度密码,一键跳转打开网站啥的。
    ![image.png]( https://i.loli.net/2020/05/29/7epdocnBy1fKJsZ.png)
    ![image.png]( https://i.loli.net/2020/05/29/VpxDoGBwePEd7fy.png)
    cmdOptionKana
        6
    cmdOptionKana  
    OP
       2020-05-29 12:55:33 +08:00
    @raphael008 我最开始也是做了一个桌面版,后来考虑到有时应急可以随时随地用别人的电脑或手机来找回密码,就改成了网站版。

    另外我有一个特别的需求,希望打开软件时不显示列表,要用什么就精确搜索(比如固定搜索 v2 就出现 v2ex,而不会同时出现 v2ray,或者搜索 hub 就固定出现 github,而不会同时出现 pxxxhub ),所以才弄了这个别名功能。(不过注定是小众需求了)
    Sanko
        7
    Sanko  
       2020-06-03 23:36:50 +08:00
    @raphael008 开源吗老哥
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 03:47 · PVG 11:47 · LAX 19:47 · JFK 22:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.