你会如何实现私人图像?

时间:2013-06-29 15:41:38

标签: php android image symfony

我正在Android中开发一个应用程序,它有点像Whatsapp这样的头像。如您所知,在WhatsApp中,您可以创建一个组,并为其设置组图片。

我在拍摄图像,保存等方面没有任何问题。我遇到的问题是我正在开发Symfony2(PHP)中的Web服务,我想接收图像并将其保存在服务器上的某个位置。但是,显然这些图像不公开,只应为具有权限的用户查看。我已经考虑过传统方法:将图像保存在文件夹上并提供链接,但这很容易被破解。

那么伙计们,你会怎么做?也许直接将二进制数据保存到MySql中?有没有干净的方法来实现这个目标?

任何提示都表示赞赏。

感谢。

2 个答案:

答案 0 :(得分:4)

另一个答案是将PHP调用的mime类型设置为图像。调用http://xxx/images.php?id=8989031289130之类的网址会返回图片而不是HTML文件。

然后您可以访问PHP安全上下文,并可以验证用户是否确实有权查看此文件。

还有一些细节: Setting Mime type in PHP

答案 1 :(得分:3)

这里的典型答案是使用排除猜测的文件命名方案。例如,您可以使用文件名加上一个秘密盐,将它们一起散列,并将哈希附加到文件名(在扩展名之前)。因此,/foo/bar/baz.jpg将成为/foo/bar/baz_8843d7f92416211de9ebb963ff4ce28125932878.jpg

只要您的哈希盐保密,文件名或多或少在数学上受到保护,不受随机或强力发现的影响。例如,这是Facebook如何保护其用户图片的核心,而无需为每个图像请求实际要求身份验证(根本不能很好地扩展)。