我是否需要验证file_get_contents将使用的上传文件


do I need to validate a uploaded file that will be used by file_get_contents

>我正在编写一个php脚本,其中用户上传一个文件,该文件将被服务器读取以检索一些数据然后删除,一切都发生在同一个脚本中。

像这样:

// Saves the file
// Loads the file (file_get_contents)
// Retrieve data
// Delete file

一些注意事项:

  • 在此期间,文件将以随机生成的名称存储。
  • 文件将具有允许的最小和最大大小。
  • 采取任何进一步措施之前,将正确验证检索到的数据

我的问题是:在文件保存和读取过程中,我是否需要采取任何进一步的安全措施?

我希望我的问题很清楚。提前谢谢。

我担心的是上传期间,而不是在您处理文件时。

您需要确保只允许某些类型的文件。 我会避免允许二进制或可执行文件。 看起来你让他们上传了基于文本的文件,所以在你的PHP脚本中,使用类似于这样的检查:

if ($_FILES["uploadedfile"]["type"] != "text/plain") {
   // File not the right type ... do not permit upload
}

@LuvnJesus有一个好主意,除了"type"元素是由用户代理设置的。如果可行,更好的主意是使用实际检查文件第一个字节的工具。对于图像,我知道这不是您描述的场景,人们已经学会了以巧妙的方式使用 GD 库来确定文件类型。我不经常使用 PHP 中的文件,但我会仔细检查文件系统函数、GD 以及任何其他可能让您快速"查看"文件并根据该预览做出决策的东西。