2014-02-24 78 views
-1

我开发一些服务器端代码与PHP/MYSQL,需要用户认证。安全地上传图片

当用户创建一个新帐户,我做的所有标准的哈希+盐东西哈希存储在数据库中,但我不知道做什么用,他们需要上传scaned ID做。

我的意思是,如果你创建你的个人数据的账户,一部分(姓氏,姓名,地址,...)是物理身份证复印件scaned(图)(驾驶证,... )和我关心如何妥善处理这些敏感的图像。

如果你们能指引我正确的方向或给我一些提示,我将不胜感激。

谢谢你的时间!

编辑:

哇,你们真棒,快!

ID的存储是强制性的,我希望我能workarround莫名其妙,但我不能。

我会根据您的建议授予访问权限,并尝试删除并存储在CD中,或按照您的建议存储。

我正在考虑用一些加密来加密二进制数据,但不知道它是否是一个好主意。

+0

如果您只是简单地处理文件就没有危险。我只是简单地将它们存储在网络根目录之外。您不会因为将它们存储在数据库中而自动获取安全性。 –

+0

总是将存储的文件重命名为md5字符串(或其他)。所以他们不能访问上传的文件名了。使用加密名称将原始名称存储到dbase中。 可以确定通过imagecreate()来修剪它。并检查MIME类型(不是防弹的!) –

+0

@RONnieJespersen:没有“*无危险*”之类的东西。对于攻击者来说,安全只能使攻击目标更加困难*完成任何事情都是不可能的。人们希望能够实现的最好目标是实现一个难以实现的目标,即攻击者所关心的攻击者在他们完成任何有用的事情之前耗尽他们的资源(时间,金钱,计算能力等)。为了实现这一目标,需要确定攻击者所关心的人,量化他们的资源并确定什么才算“有用的成就”。 – eggyal

回答

1

TL; DR这真的很危险。除非必须,否则不要这样做。

如果我是你,我会从威胁分析开始。在系统上保留这些身份证图像有哪些安全隐患?有什么可能出错?你在捍卫什么?

  1. badguys可能会穿透你的系统,并批量盗取他们,并将他们卖给身份盗贼。

  2. 与1相同,但他们也将偷表的信息,并将其关联到你的图片。

  3. 有人可能误用或滥用您的系统的功能来查看一个或几个图像,以及滥用他们得到的结果的信息。

  4. 有人可能通过给你偷走或伪造的身份证来欺骗你。

  5. 如果你正在处理付款,您的系统可能会失败,一个PCI审计,你会毫不客气地拒绝付款处理服务。

当您构建系统来尝试保护这些非常敏感的图像时,您需要弄清楚您正在防范哪些威胁。您还需要确定允许哪些人查看此信息,如何验证这些授权用户以及您保留此信息的时间。

理想情况下,您不会收集这些信息。

如果您收集它,请使用https://从第一天开始。

如果你必须收集它,你的下一个最好的选择是及时检查它,然后安全地擦除它,所以你不会为盗贼建立一个很好的蜜罐。

如果您确实需要保留它,那么您的下一个最佳选择是将其迅速移动到空气存储介质中,并从您的在线系统中清除。例如,您可以每隔几天刻录一张CD-ROM,并将它们存档在文件柜中。

如果您必须在线保留此信息,那么您肯定希望编写将其存储到Web根目录以外的文件系统的Web程序。当有人希望看到的图像,你肯定不希望简单地呈现图像的URL像

https://honeypot.com/imgs/idcards/user2573551.png 

,并从目录服务备案。相反,您需要一些不会将用户标识作为显式用户标识参数的软件。也就是说,你可以提出一个URL像

https://honeypot.com/myId.php 

您还可能要对所谓的“随机数”抑制各种种类的跨站点或已保存URL攻击的安全令牌阅读起来。 WordPress碰巧有一个很好的nonce系统,你可以从中学习。

小心点,呃?

+1

与(或可能除此之外)存储空间不同,人们可以对客户端的数据进行非对称加密,并仅将密码文本发送/存储到服务器上/上。这些数据可以在需要时使用秘密/私钥以离线方式访问。 – eggyal