【问题标题】:PHP - Using Session Variables to Protect .docx Files in the same directoryPHP - 使用会话变量保护同一目录中的 .docx 文件
【发布时间】:2017-01-22 01:26:39
【问题描述】:

我创建了一个 PHP 应用程序,它可以自动创建租赁文件,如租约、延期、通知等。该应用程序创建租赁文件并将其作为 word 文档保存在指定目录中。

我的应用程序要求用户登录并使用会话变量验证登录。我的问题是如何保护包含已完成租赁文件的 /docs/ 目录?如果有人知道这个目录存在,他们可以简单地将它输入浏览器。我在这个目录中添加了一个空白 index.html 文件。这样可以防止显示文件名。我只是想知道保护这个目录的最佳方法是什么,因为它会包含带有个人信息的文档?

【问题讨论】:

标签: php session-variables


【解决方案1】:

瑞恩感谢您的建议。正如您所建议的,我将文件保存在文档根目录之外并使用此代码访问它们。

<?php
header('Content-Description: File Transfer');
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="'.$_GET['doc'].'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($doc));
readfile("../test/" . $_GET['doc']);
?>

为了访问这些文件,我在链接到上述代码的 url 中包含了文件名。前任。 http://example.com/test.php?doc=filename.docx

【讨论】:

  • 别忘了清理 GET 参数...这是在乞求滥用。至少检查 ../ 什么的。另外,文件存在检查在哪里:)。总是希望有人破解你的代码,所以你应该先破解它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 2011-05-20
  • 1970-01-01
  • 2012-04-19
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多