V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YiweiHangzhi
V2EX  ›  程序员

身份证照片存数据库,该如何存最好?存一个字段还是两个字段

  •  
  •   YiweiHangzhi · 2018-08-28 15:10:27 +08:00 · 11001 次点击
    这是一个创建于 2287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前遇到一个业务需求,上传身份证照片存储,身份证有正反两面,那是合在一个字段里好?还是分成 2 个字段好?

    还有就是一份代码复制两份,还是用 List 进行循环来取值好?

    第 1 条附言  ·  2018-08-29 17:47:58 +08:00
    文件是上传在服务器上的,是指 URL 链接字段的存储
    69 条回复    2018-08-31 09:24:48 +08:00
    YiweiHangzhi
        1
    YiweiHangzhi  
    OP
       2018-08-28 15:11:42 +08:00
    顶一些,求帮助~
    claysec
        2
    claysec  
       2018-08-28 15:34:59 +08:00
    怎么方便怎么来。想要图片存入数据库就转成 base64 存入。
    TomatoYuyuko
        3
    TomatoYuyuko  
       2018-08-28 15:41:40 +08:00
    存一张拼雪碧图可行么?
    zsy979
        4
    zsy979  
       2018-08-28 15:42:09 +08:00
    个人觉得两个方便...
    imn1
        5
    imn1  
       2018-08-28 15:54:43 +08:00
    我个人做这个的话,每图一个字段,加密入库,原始文件删掉,脱裤无拉链也看不到东西
    kslr
        6
    kslr  
       2018-08-28 15:58:06 +08:00 via Android
    存两份,不要往数据库存
    rexyan
        7
    rexyan  
       2018-08-28 16:01:46 +08:00 via iPhone
    直接存?不应该加密吗?
    dcsite
        8
    dcsite  
       2018-08-28 16:03:30 +08:00
    身份证照片为什么要存数据库?
    annielong
        9
    annielong  
       2018-08-28 16:06:22 +08:00
    看场景不,如果类似 A4 纸张大小的扫描件那种,正反面都在一个图片上,一次上传的放一个字段,如果分别上传的还是放两个字段,或者是一个字段,然后分两条记录,
    lovedebug
        10
    lovedebug  
       2018-08-28 16:11:46 +08:00 via Android   ❤️ 1
    不要把图片存服务器。为啥不存文件系统?或者专门的图片服务器?或者 azure blob ?
    zhengxiaowai
        11
    zhengxiaowai  
       2018-08-28 16:13:00 +08:00   ❤️ 3
    。。。。。。。。。。。这种信息怎么可以存数据库,校验完毕就要在内存中销毁啊
    qiyuey
        12
    qiyuey  
       2018-08-28 16:14:53 +08:00
    不要存数据库
    randyzhao
        13
    randyzhao  
       2018-08-28 16:16:46 +08:00
    zhipengpyy
        14
    zhipengpyy  
       2018-08-28 16:26:45 +08:00   ❤️ 6
    @zhengxiaowai 销是不可能销的, 真有会销毁这种数据的公司吗 ??
    moshao6
        15
    moshao6  
       2018-08-28 16:29:20 +08:00
    看后面的量是否多,如果很少了话建议数据库,两个字段
    mydns
        16
    mydns  
       2018-08-28 16:31:38 +08:00
    文件形式存吧 要不数据库太大了
    liuawei
        17
    liuawei  
       2018-08-28 16:37:11 +08:00
    两个字段,存放图片的路径吧
    bingocn
        18
    bingocn  
       2018-08-28 16:49:17 +08:00
    正反面保存在一起。自定义数据格式,用 TLV 正反面保存在一起,然后加密,base64 存数据库。
    要更安全些的话,公司弄个公私钥对,加密的对称密钥可以定期产生,然后用公司的公钥加密这个对称密钥
    loveCoding
        19
    loveCoding  
       2018-08-28 18:19:57 +08:00
    加密后直接上文件存储吧 ,数据库只是存一个 url 而已 .
    对于文件类型,推荐服务中单独抽一张文件表,记录文件相关信息 提供统一文件上传,下载接口,业务表里面引用 id 就好了
    wweir
        20
    wweir  
       2018-08-28 18:34:31 +08:00 via Android
    存对象存储好,路径存数据库
    owenliang
        21
    owenliang  
       2018-08-28 18:38:25 +08:00
    人家身份证,不方便存 CDN 上,你们非得让他存 CDN 上。
    flight2006
        22
    flight2006  
       2018-08-28 19:11:23 +08:00
    1、文件存文件系统,数据库存文件系统 id 或者 url
    2、正反面分 2 条记录存,因为存在一条记录你不能保证用户上传正面就一定有反面,如果只有一面那条就是个脏数据
    znood
        23
    znood  
       2018-08-28 20:45:17 +08:00 via iPhone
    @owenliang 当然可以存,数据加密存进去,取出来再解密
    delectate
        24
    delectate  
       2018-08-28 20:48:59 +08:00
    当然不可能销毁;必须要入库也别转 base64,分两个字段,存路径和 md5 (或者身份证号?)
    iwtbauh
        25
    iwtbauh  
       2018-08-28 20:58:04 +08:00 via Android
    说加密的是认真的吗 XD

    > 通常,一个安全系统的安全性只取决于它所拥有的秘密,慎防虚假的秘密 --- 埃里克雷蒙

    这种情况下,加密只能造成一种安全假象。

    最安全的做法是#11

    当然如果你们只是为了在宣传上增加一个“我很安全”的卖点,当我没说
    s609926202
        26
    s609926202  
       2018-08-28 21:40:39 +08:00 via iPhone
    @dcsite 存哪里?
    imlewc
        27
    imlewc  
       2018-08-28 23:52:38 +08:00
    像 S3,七牛,OSS 都有 私密的 bucket
    假如有个文件库,根据文件 id 取对应的私密连接地址
    数据库就存储对应的 file_id 就可以了
    shehuizhuyi
        28
    shehuizhuyi  
       2018-08-29 00:00:19 +08:00 via iPhone
    @zhengxiaowai 国内厂家有几个销毁的 身份证信息多值钱
    tyoung
        29
    tyoung  
       2018-08-29 08:20:07 +08:00 via Android
    文件这种东西为什么要存数据库呢?真想不通有的开发是怎么想的,
    lcdxiangzi
        30
    lcdxiangzi  
       2018-08-29 09:10:24 +08:00
    图片有几种存储方式?
    1、搭建文件系统
    2、BASE64 放数据库
    3、直接都在服务器某个路径下

    各有什么利弊,求大佬解释一下呢。。。
    Yanni0507
        31
    Yanni0507  
       2018-08-29 09:17:03 +08:00   ❤️ 1
    @lcdxiangzi 楼上各路大神的核心意思在于两点,1,身份证照片这样的敏感信息,直接存数据库或者放在服务器的某个路径下,是不安全,不负责任的。2,文件实体不建议放数据库,数据库不是干这个事情的
    cxh116
        32
    cxh116  
       2018-08-29 09:19:44 +08:00 via Android
    base64 的大小是原文件大小的 135% ,1g 的图片要多出 350m 出来
    feiyunruyue
        33
    feiyunruyue  
       2018-08-29 09:27:38 +08:00
    存路径,文件放到 OSS 上
    scipio
        34
    scipio  
       2018-08-29 09:29:55 +08:00   ❤️ 3
    你们持久化用户的身份证,有得到用户授权吗?

    有本事把公司名和 APP 名报出来。
    aheadlead
        35
    aheadlead  
       2018-08-29 09:33:51 +08:00
    我擦 刚一个华住的事件你们还不吸取教训
    这东西存下来你们想干嘛?
    什么公司?
    nodin
        36
    nodin  
       2018-08-29 09:34:25 +08:00 via Android
    信息泄露为何这么严重,看回复的做法就知道原因了
    jydeng
        37
    jydeng  
       2018-08-29 09:38:23 +08:00
    不要存数据库,性能不行
    itskingname
        38
    itskingname  
       2018-08-29 09:42:15 +08:00
    大家人肉楼主的公司,然后去举报这家公司非法保存身份证照片。
    xiaohei233
        39
    xiaohei233  
       2018-08-29 09:42:56 +08:00
    数据库直接存 base64 图片不妥吧。我们当初图片存储用的阿里 oss,数据库直接放 url,敏感照片用的阿里防盗链来保证安全的。
    xiaohei233
        40
    xiaohei233  
       2018-08-29 09:45:14 +08:00
    @lcdxiangzi 还有体量的问题,你一个 app 假设日活 1 万,自己存储没问题,如果日活百万千万,自己存储不划算的。
    dcsite
        41
    dcsite  
       2018-08-29 10:02:15 +08:00
    @s609926202 先不说应不应该存储用户身份信息,图片文件肯定放在专门的文件服务器上啊!
    tangzhangming
        42
    tangzhangming  
       2018-08-29 10:03:54 +08:00
    图片不允许公开访问
    简单做法,链接存一个字段里即可,毕竟很少存在只查背面的情况
    甚至可以单独存一张表,毕竟身份证除了后台不应该出现多条查询的情况,这样这张表其实使用量是非常少的,而且仅仅会根据 uid 或者身份证号码来查询,字段又少,单表存几千万上亿都没问题,项目用户量变大,分库分表时这部分需要改动的内容都很少
    imn1
        43
    imn1  
       2018-08-29 10:07:25 +08:00
    首先,我同意#11 的,不应保存
    不过,国内总会有人要求存的,就算团队 leader 也扛不住
    加密不是防外,而是防内,避免权限失误或者临时工,就是跟网络分开的第二套管理系统

    我不太明白为何要考虑性能?身份证照片是常读数据么?用户要看、要改?
    存了也不让用户再读、再写啊,先暂存,然后迁移到离线机器,只给公司有权限管理或者公检法查看
    网络肯定不给这个读取接口,用户看自己的身份证照片干嘛?每天看着不对来改一次?
    rxzxf1993
        44
    rxzxf1993  
       2018-08-29 10:34:37 +08:00
    阿里云 oss,搞个加密的 bucket 就 ok 了。
    ooooo
        45
    ooooo  
       2018-08-29 10:39:49 +08:00
    @dcsite
    @zhengxiaowai
    @scipio
    @itskingname

    刚刚住店信息身份证都被泄露了
    你们这下一波就是要泄漏用户的身份证照片的节奏,谁敢拍胸膛保证绝对安全?
    这个比身份证号码泄漏更危险!!!
    如果是手持的话,更严重!

    这么做经过用户同意了吗?
    楼主是哪个公司的?

    淘宝的开店的手持身份证?
    证券公司的开户手持?

    强烈要求国内立即推行此政策
    难道不应该是验证完了就该删掉么?
    就像信用卡信息企业只许验证,服务器上不能留存一样的!

    哪天这些留存用户身份证照片已经手持的厂商们数据库被国外黑客脱裤了的话
    那可就有得玩了
    身份证,公民的住址,年龄,照片,人脸识别数据等
    这是在危害国家和全民的安全?

    请问,国内身份证号码可以改么?
    不行吧?
    abclucifer
        46
    abclucifer  
       2018-08-29 10:41:55 +08:00
    不建议存数据库
    codespots
        47
    codespots  
       2018-08-29 10:43:35 +08:00   ❤️ 1
    楼上的所有不是#11 楼做法的请报上公司名,我一律拉黑卸载贵司任何产品!
    Rizio
        48
    Rizio  
       2018-08-29 10:45:24 +08:00
    以前还觉得搞 GFW 的不好,现在某些回复,果然是为了钱为了工作啥都干。
    lostberryzz
        49
    lostberryzz  
       2018-08-29 10:47:48 +08:00
    图片加密有很成熟的方法,但是采纳不采纳就是其他方面的因素了
    qq976739120
        50
    qq976739120  
       2018-08-29 10:49:23 +08:00
    哈哈,楼主跟我刚毕业一样,正确的做法是将文件存到一个地址,本地也好 oss 也好,字段存地址的 url 即可,希望对楼主有帮助 :)
    lcdxiangzi
        51
    lcdxiangzi  
       2018-08-29 10:58:49 +08:00   ❤️ 1
    内存中销毁这个思路从数据安全角度看确实很专业。
    但是考虑到很多业务场景,比如,贷款审批,审批流程中风控人员可能是需要查看申请人的证件照片的,系统必须保留才可以吧。
    我觉得楼上好多人的言论有点太极端了,就事论事的讨论。
    janus77
        52
    janus77  
       2018-08-29 11:00:26 +08:00
    哈哈,前几楼果然有杠精
    kangkang
        53
    kangkang  
       2018-08-29 12:00:04 +08:00
    杭州 大数据创业公司 技术栈 Springboot+JPA+React 有 v 友看看是什么公司吗
    vgmdj
        54
    vgmdj  
       2018-08-29 12:02:00 +08:00
    对象存储,oss,有很多免费的,数据库存地址就行了
    Telegram
        55
    Telegram  
       2018-08-29 12:20:10 +08:00 via iPhone
    @westooy #47 国内各大公司你都可以去拉黑了,基本上不会有哪家会销毁。
    有些身份证照片后期需要客服审核,办业务需要用到,或者通关报关用,比如海淘,比如各种运营商开套餐合同用就要附带身份证照片。
    不是说销毁就销毁的。
    Telegram
        56
    Telegram  
       2018-08-29 12:21:42 +08:00 via iPhone
    @lcdxiangzi #51 我和你一样的观点
    TrustOcean
        57
    TrustOcean  
       2018-08-29 12:29:12 +08:00
    不建议存数据库
    Youen
        58
    Youen  
       2018-08-29 12:38:26 +08:00
    存文件 ID
    shanliang
        59
    shanliang  
       2018-08-29 12:43:06 +08:00
    建议数据库密码设置 123456,开启公网访问
    allenhu
        60
    allenhu  
       2018-08-29 13:12:14 +08:00
    销毁是不可能销毁的,信用卡信息都不可能去销毁,只有不销毁,才能维持得了生活这样子。
    rotoava
        61
    rotoava  
       2018-08-29 13:26:00 +08:00
    真是个很现实的问题:p2p 和 各类风控( AI 人脸 活体识别公司)有没有权利存储用户的身份证照片。(用户不知情状态下)
    laike9m
        62
    laike9m  
       2018-08-29 15:47:52 +08:00
    存 GitHub 吧
    arthas2234
        63
    arthas2234  
       2018-08-29 16:01:44 +08:00
    图片存数据库,备份数据库的时候你会哭
    jjianwen68
        64
    jjianwen68  
       2018-08-29 16:31:33 +08:00 via Android
    支付宝是怎么处理用户身份证的
    NotNil1
        65
    NotNil1  
       2018-08-29 16:35:39 +08:00
    @zhengxiaowai 因为跑路的时候 ,最后还可以卖一波数据换路费。
    neoFaster
        66
    neoFaster  
       2018-08-29 16:41:00 +08:00
    看场景, 如果不会按正反面一类的场景单独搜索. 可以存储在一个字段里,按指定格式拼接存储. (当然这些所说的都是指存储 oss 返回的唯一标示 id.) 如果存储 base64 这种,那就最好两个字段.
    dodo2012
        67
    dodo2012  
       2018-08-29 17:08:54 +08:00
    最简单就是保存成图片,然后审核完销毁,否则一是占空间,二是不安全,
    YiweiHangzhi
        68
    YiweiHangzhi  
    OP
       2018-08-29 17:44:22 +08:00
    @kangkang 我们公司==
    taobibi
        69
    taobibi  
       2018-08-31 09:24:48 +08:00
    我不知道贵公司存身份证照片干什么? 我就职的前物流公司的做法是买身份证识别的接口,身份证验证和比对,身份证读卡器验证,然后 OCR 转成文字存储,之后再邮寄东西只需要报手机号比对后就给你邮寄了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:18 · PVG 19:18 · LAX 03:18 · JFK 06:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.