PHP 密码管理器,浏览器端 AES 加密 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zzy8200
V2EX    分享创造

PHP 密码管理器,浏览器端 AES 加密

  •  2
     
  •   zzy8200
    zeruniverse 2016-09-02 09:49:06 +08:00 5381 次点击
    这是一个创建于 3334 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个自用的密码管理器。距离第一次在 V2EX 上发布: t/211891 已经有一年了。这一年提交了将近 300 个 Commit, 应该已经做的比较完善了。相对于去年版本的改进

    • 更人性化的 UI ,支持 tag-cloud,全局搜索,分页
    • 支持每个账号添加一个附件( 3MB 以内),附件也采用浏览器端加密,原理跟 mega.nz 差不多。
    • 支持自定义列(比如你可以在账号密码之外新增用户名列, URL 列...)
    • 支持 CSV 导入 /导出
    • 超时自动登出,多次错误尝试自动暂封号 /封 IP
    • 在信任的设备上使用较短的 PIN 登陆
    • 用了 PBKDF2
    • 备份 /恢复功能
    • 登陆历史记录

    https://github.com/zeruniverse/Password-Manager

    截屏 capture

    加密流程图 Mechanism

    第 1 条附言    2016-09-02 12:22:11 +08:00

    没有在浏览器端加密的数据有

    • 登陆密码管理器的用户名 (这个没法加密,否则不能校验了)
    • 该用户名的邮箱 (这个是我自己版本用来做二次验证的,GitHub上的版本除了注册填个邮箱其他地方都用不到邮箱)
    • 该用户的自定义列配置(这个感觉没必要加密)
    • 登陆历史的IP和浏览器UA以及登录时间(同理没什么加密的必要,而且IP要用来做failtoban)
    • PIN记录里的设备标识,UA和创建时间(同上,其中设备标识没法加密)

    除了这5个所有信息均浏览器端加密。包括账号名,用户名,密码,密码修改时间等等。

    26 条回复    2016-09-07 04:38:39 +08:00
    kamen
        1
    kamen  
       2016-09-02 09:57:16 +08:00 via Android
    已经很不爽 lastpass 很久了,有时间试试
    zzy8200
        2
    zzy8200  
    OP
       2016-09-02 10:17:01 +08:00
    @kamen 感谢支持,安装保证简单。
    czb
        3
    czb  
       2016-09-02 10:38:45 +08:00 via Android
    好东西 已 start
    czb
        4
    czb  
       2016-09-02 10:38:56 +08:00 via Android
    *Star
    popok
        5
    popok  
       2016-09-02 10:41:46 +08:00 via iPhone
    先收藏,回去仔细体验
    billytv
        6
    billytv  
       2016-09-02 10:49:34 +08:00
    马克, 要是能与 keepass 导入导出就好了
    zzy8200
        7
    zzy8200  
    OP
       2016-09-02 11:58:49 +08:00
    @billytv keepass 能支持 csv 导出么,可以就行
    zzy8200
        8
    zzy8200  
    OP
       2016-09-02 12:14:45 +08:00
    @billytv 可以的,支持互相用 CSV 导入导出。 http://keepass.info/features.html#lnkexp

    但是你可能要稍微修改一下 csv 的 header ,导入 Password-Manager 的账号 header 必须是[name],密码的 header 必须是[password],其他的 header 如果跟你某个自定义列的列标一样就导入,否则丢弃
    qcloud
        9
    qcloud  
       2016-09-02 12:25:39 +08:00 via iPhone
    可以!好!
    stneng
        10
    stneng  
       2016-09-02 14:17:40 +08:00
    貌似和 Safari 的兼容性不好。
    wujunze
        11
    wujunze  
       2016-09-02 15:05:30 +08:00
    感谢分享
    zzy8200
        12
    zzy8200  
    OP
       2016-09-02 15:34:02 +08:00 via iPhone
    @stneng 我的 iphone 兼容不错啊。 min.css.map 没有应该不影响使用。你是页面打不开还是显示很奇怪?
    stneng
        13
    stneng  
       2016-09-02 15:45:35 +08:00
    @zzy8200 无法登入
    stneng
        14
    stneng  
       2016-09-02 15:50:05 +08:00
    @zzy8200 一直显示 waiting
    应该是 setlocalstorage.js 的问题
    stneng
        15
    stneng  
       2016-09-02 15:55:31 +08:00
    @zzy8200 我开了无痕浏览就不行,非无痕是可以的。
    主要是我平时习惯开无痕的关系。
    不过希望能支持无痕浏览哦。。。
    zzy8200
        16
    zzy8200  
    OP
       2016-09-02 16:06:53 +08:00
    @stneng 我 iphone 果然也有这个问题。基本不用无痕所以没发现。这个问题无解,因为 safari 在隐身模式下禁用 localstorage.
    zzy8200
        17
    zzy8200  
    OP
       2016-09-02 16:10:15 +08:00
    @stneng 我不知道 safari 隐身模式禁不禁 sessionstorage ,如果只禁 localstorage 的话可以在隐身模式下禁用 PIN ,那别的功能还能用。连 sessionstorage 都禁的话是真无解
    76
        18
    76  
       2016-09-02 16:52:38 +08:00
    https://app.keeweb.info/ 现在用这个
    z5238384
        19
    z5238384  
       2016-09-02 22:41:45 +08:00 via iPhone
    这个可以有,一直用 keepass 桌面版,但是那个 UI 确实很捉急 楼主这个好看
    rrkelee
        20
    rrkelee  
       2016-09-03 12:20:42 +08:00
    @zzy8200 开启了 pdo 还是报错 Fatal error: Undefined class constant 'MYSQL_ATTR_MAX_BUFFER_SIZE' in /function/sqllink.php on line 11
    zzy8200
        21
    zzy8200  
    OP
       2016-09-03 13:29:23 +08:00
    @rrkelee 我没遇到过这个问题 并且 PHP 的官方手册上有 MYSQL_ATTR_MAX_BUFFER_SIZE 这个字段。 http://php.net/manual/en/ref.pdo-mysql.php
    请检查你的 PHP 和 PDO 扩展版本是否为 5.x 最新。虽然应该跟数据库没关系,但我用的是 mariadb
    flame
        22
    flame  
       2016-09-04 20:13:15 +08:00
    楼主看看我搭建的是怎么回事, login.mgdw.org

    登陆和注册都是等待的状态。。。。
    数据库都是对了的
    zzy8200
        23
    zzy8200  
    OP
       2016-09-05 00:25:56 +08:00
    @flame 你的 reg.php 500 error 了。你检查下你的 config.php ,里面的数据库名,数据库密码和登陆名对了没有。另外,初始要导入 initial.sql,密码管理器是不会自己建表的。你看看你导入了没。 initial.sql 在 https://github.com/zeruniverse/Password-Manager/blob/master/initial.sql
    zzy8200
        24
    zzy8200  
    OP
       2016-09-05 00:28:42 +08:00
    @flame 你现在没开 php 的 debug, 我看不出问题,如果上面步骤不行的话,你需要 debug 一下。如何开启 debug :
    http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php
    然后你用开发者工具看看返回。如果你那个是 vps 的话可以直接去 /var/log 里面看 php 的 error_log
    flame
        25
    flame  
       2016-09-05 09:54:28 +08:00
    @zzy8200 开启 debug 了,数据库是对了的。应该就是那个 PDO 或者 InnoDB 没有设置好。。。。
    zzy8200
        26
    zzy8200  
    OP
       2016-09-07 04:38:39 +08:00
    @flame
    @rrkelee

    我已经确认了 bug 的原因是 mysqlnd 不支持 buffer_size 变量。你们可以下载这个文件 https://github.com/zeruniverse/Password-Manager/releases/download/9.09/sqllink_mysqlnd.php
    替换 src/function/sqllink.php 就可以了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2053 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:10 PVG 00:10 LAX 09:10 JFK 12:10
    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