【问题标题】:Obfuscate image directory using PHP?使用 PHP 混淆图像目录?
【发布时间】:2017-06-21 21:13:51
【问题描述】:

我有一组使用患者姓名存储的牙科照片,我想在网页上显示这些照片 - 当然要减去患者的信息。这一切都将在密码保护区域中,但我意识到,如果有人检查了该元素,它就会有照片的路径,其中包含他们的名字。

我使用了这篇文章中的代码:https://stackoverflow.com/a/35724642/3025534,这给了我回报:

/pics/O/Patient Name1
|_DSC_0338.JPG
|_DSC_0339.JPG
|_DSC_0340.JPG
/pics/O/Patient Name2
|_DSC_3947.JPG
/pics/O/Patient Name3
|_DSC_2541.JPG
|_DSC_2542.JPG

我现在拥有数据库中的所有文件名/路径数据。

我的兄弟希望我可以设置一个迷你照片库,在“管理员”模式下可以显示患者姓名,但是当他想向某人展示时,它会隐藏所有信息。

我偶然发现了这个可以工作的代码,但只适用于一个文件,因为它设置了标题:

<?php
    $file = 'your_images.jpg';
    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file));
    echo file_get_contents($file);
?>

然后我可以通过执行&lt;img src="image.php?file=/pics/O/Patient Name1/DSC_0338.JPG"&gt; 之类的操作来引用该文件,但我只是破坏了混淆它的目的。

如何循环显示一组文件,以画廊类型格式一次显示多个文件(不仅仅是集中在页面的开头或结尾),同时仍然隐藏源?

我应该提一下,文件名/目录名中会有空格。这不是我的组织结构,所以我无法从源头更改它——它是增量备份的一部分,因此我无法在服务器上更改它。

【问题讨论】:

  • 如果只是你费心展示它们,那么你应该隐藏源代码。
  • 如果您在美国,您需要放弃一切并聘请 HIPAA 顾问。可公开访问的患者照片是一个重大的潜在违规行为。
  • 他希望能够在牙科大会上向他人展示他正在做的事情。混淆是为了以防他曾经想通过电话这样做,而另一个人有能力检查来源。

标签: php


【解决方案1】:

使用唯一键,而不是患者姓名。例如,您可以对患者姓名进行 md5 哈希,然后:

<img src="image.php?id=1234ABCD987655A5&img=DSC_0338.JPG">

但是,如果您可以“猜测”患者姓名,攻击者就可以生成所需的 md5 密钥。因此,为每个患者生成一个随机密钥,并将其存储在数据库中。用它来查找图像。

哦,不要将患者数据存储在网络上的网络可访问目录中。

【讨论】:

  • 谢谢,所有这些都存储在网络根目录之外。
  • 这是一个很好的答案 - 它验证了我现在正在为类似目的采取的方法,所以谢谢!
猜你喜欢
  • 2013-10-07
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多