如何使用 PHP 安全上传和下载存储在文件系统中的 PDF 文件
How to safely upload and download PDF files stored in the file system using PHP
我试图四处寻找一些技巧,了解如何在不执行代码的情况下安全地执行此操作。
如果我只是将代码上传到文件系统,然后将其保留直到有人下载,代码是否会被执行?
或者这也是一个潜在的威胁?
我想做的是让用户能够以 pdf 文件的形式上传他们的简历。然后管理员可以下载此 pdf 文件(不是在服务器上查看,而是下载)。
我应该怎么做才能防止恶意文件在我的服务器上执行?另外,将此文件夹放在 public_html 文件夹之外会有风险吗?
这取决于您的服务器设置方式。如果它允许 PDF 文件用作可执行文件,或使用可用于恶意操作的特定 application/processing 脚本打开。否则,您必须遵循简单的说明,例如限制文件名长度和避免对该文件执行读取操作。据我了解,您只需要上传并保护它们。我会将它们保存在 public_html 中,并在正确上传后(您检查了文件大小、扩展名等)随时移动它们。
在文件夹中上传 .pdf 的风险不大。
该文件夹必须位于 644 (chmod) 中。并有一个 index.php 重定向到网站的索引
"public_html" 的内部或外部 .. 这不是问题
上传时,您可以检查扩展名 (.pdf) 并输入 mime:
与 finfo_file (http://php.net/manual/en/function.finfo-file.php )
和
$extension = substr($file, -3);
我试图四处寻找一些技巧,了解如何在不执行代码的情况下安全地执行此操作。 如果我只是将代码上传到文件系统,然后将其保留直到有人下载,代码是否会被执行? 或者这也是一个潜在的威胁?
我想做的是让用户能够以 pdf 文件的形式上传他们的简历。然后管理员可以下载此 pdf 文件(不是在服务器上查看,而是下载)。
我应该怎么做才能防止恶意文件在我的服务器上执行?另外,将此文件夹放在 public_html 文件夹之外会有风险吗?
这取决于您的服务器设置方式。如果它允许 PDF 文件用作可执行文件,或使用可用于恶意操作的特定 application/processing 脚本打开。否则,您必须遵循简单的说明,例如限制文件名长度和避免对该文件执行读取操作。据我了解,您只需要上传并保护它们。我会将它们保存在 public_html 中,并在正确上传后(您检查了文件大小、扩展名等)随时移动它们。
在文件夹中上传 .pdf 的风险不大。 该文件夹必须位于 644 (chmod) 中。并有一个 index.php 重定向到网站的索引 "public_html" 的内部或外部 .. 这不是问题
上传时,您可以检查扩展名 (.pdf) 并输入 mime:
与 finfo_file (http://php.net/manual/en/function.finfo-file.php )
和
$extension = substr($file, -3);