一个具有命令行 “手感” 的网页版密码管理器(Go 语言编写, NaCl 加密) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cmdOptionKana
3.16D

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

  •  
  •   cmdOptionKana 2020 年 5 月 29 日 3125 次点击
    这是一个创建于 2156 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 年 6 月 7 日

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

    7 条回复    2020-06-03 23:36:50 +08:00
    dmjob2015222
        1
    dmjob2015222  
       2020 年 5 月 29 日
    额,有点繁琐啊,还不如让浏览器记住呢
    cmdOptionKana
        2
    cmdOptionKana  
    OP
       2020 年 5 月 29 日
    @dmjob2015222 目标用户是对安全要求稍高一些,希望对数据有绝对控制权,并且想做一些个人定制的用户……确实受众很少啦
    Cmdhelp
        3
    Cmdhelp  
       2020 年 5 月 29 日
    手机端 iclou
    电脑端 chrome google 账户
    完美
    cmdOptionKana
        4
    cmdOptionKana  
    OP
       2020 年 5 月 29 日
    @Cmdhelp 安全程度不一样,比如有的人手机会借给孩子玩,有的人电脑会和别人共用。(不过我设想的情景还是比较小众,大多数人是用正常工具足够了)
    raphael008
        5
    raphael008   2020 年 5 月 29 日
    自己写的管理工具,一直用到现在,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 年 5 月 29 日
    @raphael008 我最开始也是做了一个桌面版,后来考虑到有时应急可以随时随地用别人的电脑或手机来找回密码,就改成了网站版。

    另外我有一个特别的需求,希望打开软件时不显示列表,要用什么就精确搜索(比如固定搜索 v2 就出现 v2ex,而不会同时出现 v2ray,或者搜索 hub 就固定出现 github,而不会同时出现 pxxxhub ),所以才弄了这个别名功能。(不过注定是小众需求了)
    Sanko
        7
    Sanko  
       2020 年 6 月 3 日
    @raphael008 开源吗老哥
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1531 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 16:50 PVG 00:50 LAX 09:50 JFK 12:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86