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

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

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

    一个自用的密码管理器。距离第一次在 V2EX 上发布: https://www.v2ex.com/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   ·   实用小工具   ·   4562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:53 · PVG 11:53 · LAX 19:53 · JFK 22:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.