这既是一个最佳实践问题,也是一个实施问题。
以下是方案/要求:
- Backend是PHP,DB是MySQL -用户登录建立会话,整个站点是HTTPS -用户可以上传医疗文件(png/mp4/pdf.)他们的账户。-用户需要能够查看(在线IMG或现场视频)或下载他的文件。-非所有者用户不能查看文件,除非获得授权(在DB上设置标志)。-除非用户是所有者并具有活动会话,否则文件URL共享无法工作。
我有文件上传的AJAX工作。现在,我正在生成一个随机密钥,并将其用作服务器上的文件名,以避免猜测文件名。但下一个问题是,如果有人有URL,他们可以查看文件。
要做到这一点,我需要采取哪些措施和实际步骤?因为它是医疗的,所以安全是最重要的。有什么我忽略或遗漏的东西吗?
谢谢
发布于 2013-11-30 06:35:52
我建议如下:
create database <db_name>;)password()方法在上述表中注册时先加密密码,然后存储到db,以获得额外的安全性。session,以避免访问偏离的URL。session/coookie中设置PHP.INI过期期。如果有什么不清楚的地方请告诉我.谢谢。
发布于 2013-11-30 06:29:00
在媒体文件目录中,添加具有以下内容的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来实现这一点。
希望这能有所帮助。
https://stackoverflow.com/questions/20296959
复制相似问题