0

我正在 Android 中开发一个应用程序,它以某种方式具有像 Whatsapp 这样的化身。如您所知,在 WhatsApp 中您可以创建一个群组,并为其设置群组图片。

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

那么小伙伴们,你们会怎么做呢?也许直接将二进制数据保存到 MySql 中?有什么干净的方法可以实现这一目标吗?

任何提示表示赞赏。

谢谢。

4

2 回答 2

4

另一个答案是将 PHP 调用的 mime 类型设置为图像。然后,对 URL 的调用 http://xxx/images.php?id=8989031289130将返回图像而不是 HTML 文件。

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

在以下位置有更多详细信息: 在 PHP 中设置 Mime 类型

于 2013-06-29T15:51:01.417 回答
3

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

只要您的哈希盐仍然保密,文件名或多或少在数学上受到保护,不会被随机或蛮力发现。例如,这是 Facebook 如何保护其用户图片的核心,而无需对每个图片请求都进行身份验证(这根本无法很好地扩展)。

于 2013-06-29T15:47:08.700 回答