这是最佳实践和实施问题。
以下是方案/要求:
- 后端是PHP,DB是MySQL - 用户登录建立会话,整个站点使用HTTPS - 用户可以将医疗文件(png / mp4 / pdf ...)上传到他们的帐户。 - 用户需要能够查看(站点内联IMG或VIDEO)或下载他的文件。 - 除非获得授权(在DB上设置标志),否则非所有者用户无法查看文件。 - 除非用户是所有者并且具有活动会话,否则文件URL共享无法工作。
我通过AJAX上传文件。现在我生成一个随机密钥并将其用作服务器上的文件名,以避免文件名猜测。但下一个问题是,如果某人有URL,他们可以查看文件。
我需要采取哪些措施和实际步骤来解决这个问题?由于它是医疗,安全是至关重要的。有什么我忽略或遗失的吗?
由于
答案 0 :(得分:0)
在媒体文件目录中,添加具有以下内容的htaccess文件:
order deny,allow
allow from [IP_ADDRESS]
deny from all
IP_ADDRESS
是你的php服务器的ip地址。这将限制人们导航到文件所在的目录。
然后使用PHP来提供文件(修改标题)。例如:
header('Content-type: '.$mimeType);
header("Content-Disposition: inline; filename=".$filename);//lets the browser open the pdf
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: anytextexeptno-cache', true);
header('Cache-control: private');
header('Expires: 0');
readfile($file);
这样您还可以修改输出中的文件名。如果您想保护/限制文件只能由拥有权限的人访问,您现在可以使用PHP执行此操作。
希望这有帮助。
答案 1 :(得分:0)
我建议如下:
create database <db_name>;
)password()
方法在上述表格中注册时存储到db之前加密密码以提高安全性。session
每个php页面都可以避免访问流浪URL。session/coookie
中设置PHP.INI
有效期。echo
内容到浏览器。注意:使用随机名称分配给每个用户的目录。如果有任何不清楚的地方,请告诉我..... 感谢。