gdtv
V2EX  ›  PHP

请问有没有支持加密功能的单文件数据库?

  •  
  •   gdtv · Feb 4, 2017 · 5173 views
    This topic created in 3559 days ago, the information mentioned may be changed or developed.

    想用 php 开发一个在线记事本,记录一些非常私密的东西,首要要求是服务器被入侵后黑客也无法读取到我的文章内容.
    所以想要找一个支持加密功能的单文件数据库,例如 sqlite3,但是免费版本的 sqlite3 不支持加密功能.
    请问有没有类似 sqlite3 的其他的免费的支持加密功能的数据库呢?
    性能不重要,自己一个人用的.

    Supplement 1  ·  Feb 4, 2017
    初步决定用 4 楼的方法,加密入库,搜索的时候遍历一次数据库,逐条记录解密后查找,因为个人使用数据量不会太大,并且搜索不会很频繁,所以搜索的性能问题可以接受
    41 replies  •  2017-03-09 00:11:02 +08:00
    honeycomb
    honeycomb
    Feb 4, 2017 via Android
    1
    keepass 数据库格式?
    SingeeKing
    SingeeKing
    Feb 4, 2017 via iPhone
    2
    非对称加密就可以了吧
    yexiaoxing
    yexiaoxing
    Feb 4, 2017
    3
    换个思路,在 php 做加解密?
    SuperMild
    SuperMild
    Feb 4, 2017❤️1
    4
    php 加密后入数据库,缺点是不能搜索,但由于是一个人用数据量很小,可以每次把整个数据库读出来解密后放进一个临时数据库,这样就能搜索了,用完删除临时数据库。
    springz
    springz
    Feb 4, 2017❤️1
    5
    DES 加密后密文存进数据库呗,你自己掌握 key
    ryd994
    ryd994
    Feb 4, 2017 via Android
    6
    换个思路, luks
    自己要用再挂载
    cnwtex
    cnwtex
    Feb 4, 2017 via iPhone
    7
    只要 PHP 能读写,入侵的人就能读写,这种场景谈什么加密
    wwqgtxx
    wwqgtxx
    Feb 4, 2017
    8
    最简单的办法,在网页端用 JS 加密,密码自己掌握即可,就算破了你的服务器也拿不到有用的数据
    zjgsamuel
    zjgsamuel
    Feb 4, 2017
    9
    额~~ 最近也在构思自己的一个日记应用 有类似场景的需求 LZ 找到好的解决方案 记得分享一下哈~
    missdeer
    missdeer
    Feb 4, 2017
    10
    基于 sqlite3 的 sqlcipher 有免费版本的
    gdtv
    gdtv
    OP
    Feb 4, 2017
    11
    @springz DES 加密后密文存进数据库呗,这样在数据库里就无法全文搜索了,就无法搜索文章了
    gdtv
    gdtv
    OP
    Feb 4, 2017
    12
    @yexiaoxing 在 php 做加解密,这样在数据库里就无法全文搜索了,就无法搜索文章了
    gdtv
    gdtv
    OP
    Feb 4, 2017
    13
    @missdeer sqlcipher 有看过,但我不太熟悉 linux 配置,试过编译 sqlcipher 没成功
    gdtv
    gdtv
    OP
    Feb 4, 2017
    14
    @wwqgtxx 请问网页端用 JS 加密是什么意思?可以再说说吗?
    xenme
    xenme
    Feb 4, 2017 via iPhone
    15
    @gdtv 发送的是加密后的内容啊
    gdtv
    gdtv
    OP
    Feb 4, 2017
    16
    @SuperMild 你说的方案我也有考虑过,但我怕数据量太大。另外放进一个临时数据库,万一没来得及删除服务器就被黑了。。。。
    gdtv
    gdtv
    OP
    Feb 4, 2017
    17
    @xenme 这样在数据库里就无法全文搜索了,就无法搜索文章了
    mogging
    mogging
    Feb 4, 2017 via iPhone
    18
    @missdeer 微信就是用这个加密的,以前有老外写过详细的技术文章
    grayon
    grayon
    Feb 4, 2017
    19
    全文搜索你怎么做?分词做索引啊
    springz
    springz
    Feb 4, 2017
    20
    BerkeleyDB
    gdtv
    gdtv
    OP
    Feb 4, 2017
    21
    @grayon 全文搜索,直接用 like ,因为数据量小性能不是问题
    grayon
    grayon
    Feb 4, 2017
    22
    用移位加密或者替换加密就好了
    SuperMild
    SuperMild
    Feb 4, 2017 via iPhone
    23
    @gdtv 一个人用数据量应该不大,临时数据库可以放在客户端 js 里,服务器的数据库一直只储存加密后的文本。
    gdtv
    gdtv
    OP
    Feb 4, 2017
    24
    @SuperMild 我看了我的谷歌文档,几年来一共有 100M 的 word 文档,如果换成 txt ,估计至少要 20M 吧, 20M 的东西塞在 js 里可以吗? 另外放 js 里似乎更不安全吧,有时在别人的电脑上网, js 会留在别人的电脑缓存里。
    wwqgtxx
    wwqgtxx
    Feb 4, 2017
    25
    @gdtv 就是你在浏览器端用 JS 来进行 AES 加密之后再保存到服务器,这样谁拿到服务器都没啥用,当然,这样你就没法在服务器端全文搜索了
    SuperMild
    SuperMild
    Feb 4, 2017
    26
    @gdtv 20M 小意思,现在宽带下载也很快,但是用手机流量访问时太费流量。缓存的问题应该可以通过设过期时限来解决吧(未确认),不过如果能在服务端用原生支持加密的数据库当然是最好的。
    guxin0123
    guxin0123
    Feb 4, 2017
    27
    ms access ???
    lslqtz
    lslqtz
    Feb 4, 2017 via iPhone
    28
    Windows BitLocker
    要用的时候 exec 解密,否则加密
    根据传入的密码来,但是也不是绝对安全的,因为可以修改文件抓密钥
    lslqtz
    lslqtz
    Feb 4, 2017 via iPhone
    29
    @wwqgtxx 拿到服务器修改 JS ,将密码发往服务器一份。
    lslqtz
    lslqtz
    Feb 4, 2017 via iPhone
    30
    建议用 HTML+AES+Chrome 扩展(读取 /写入本地文件)或 localStorage (注意备份)做成单机版的
    phithon
    phithon
    Feb 4, 2017❤️1
    31
    免费版本的 sqlite3 其实是预留了加密、解密接口的。
    给你一个我大二时候写的密码管理器,代码乱七八糟的别吐槽,但其中有 sqlite3 的加密实现,这个软件的登录密码其实就是 aes 的密钥。
    https://github.com/phith0n/PasswordKeeper
    这个库就是一个 dll ,理论上用什么语言操作都不影响,但我没试过用 PHP 行不行。
    Khlieb
    Khlieb
    Feb 4, 2017 via Android
    32
    HSQLDB?
    gdtv
    gdtv
    OP
    Feb 4, 2017
    34
    @limhiaoing 这个是收费的
    jimzhong
    jimzhong
    Feb 5, 2017
    35
    请问 LZ 的密钥如何存储呢?是由用户在每次加密 /解密时提供还是存在服务器上?
    gdtv
    gdtv
    OP
    Feb 5, 2017
    36
    @jimzhong 密钥由用户在每次登录网站的时候输入,也就是网站的登录密码,登录成功后将密钥加密存放到 cookie 里。网站启用 https 。
    jimzhong
    jimzhong
    Feb 5, 2017
    37
    @gdtv cookie 容易被盗用,用服务端的 session 会不会更好一些?
    gdtv
    gdtv
    OP
    Feb 5, 2017
    38
    @jimzhong 用 session 好些
    nilai
    nilai
    Feb 5, 2017
    39
    SQLCipher +1
    xieranmaya
    xieranmaya
    Feb 5, 2017
    40
    @lslqtz 这个思路很不错啊,我第一反应也是这么做。每次修改数据后把加密后的数据全量备份到 vps 上去,甚至扔 github 上都行
    czb
    czb
    Mar 9, 2017 via Android
    41
    ABC.li 这个网站的思路估计和你的差不多
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2734 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 13:47 · PVG 21:47 · LAX 05:47 · JFK 08:47
    ♥ Do have faith in what you're doing.