gpt4 book ai didi

php - 此代码方法中的安全缺陷

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:08 24 4
gpt4 key购买 nike

我想知道这种方法是否会存在任何安全漏洞。我正在编写一段代码,允许用户上传文件,另一组代码用于下载这些文件。这些文件可以是任何内容。

  1. 用户上传文件(包括 .php 文件在内的任何文件),将其重命名为 md5 哈希(删除扩展名)并存储在服务器上。生成相应的 mySQL 条目。
  2. 尝试下载文件的用户使用 download.php 下载发送 md5 文件的文件(使用原始名称)。

是否有任何人可以利用上述场景?

最佳答案

嗯,理论上没有。不应该有办法利用该系统。但是,我想向您指出几件您可能没有想到的事情。

首先,由于文件是通过 PHP 文件下载的(假设 readfile() 带有适当的 header ),您应该将文件放在用户无法访问的地方。在 apache 服务器上,通常最简单的方法就是将一个 .htaccess 文件放入上传目录,并在其中添加“拒绝所有”文件以防止外部访问。如果用户一开始就无法访问外部文件,那么就不必担心文件扩展名会造成问题(尽管出于存储目的重命名仍然是个好主意)

其次,用哈希命名文件可能不是一个好主意,因为你最终可能会发生冲突。如果两个文件碰巧具有相同的哈希值怎么办?更不用说,计算哈希有​​点慢,尤其是对于较大的文件(如果根据文件内容而不是名称计算)。由于您将条目存储到数据库中,我假设您在那里有某种主键(如 auto_increment 字段)。我建议简单地使用该 ID 号作为文件名进行存储以避免冲突(如果您不知道,您可以通过 mysql_last_insert_id() 获取上次插入生成的 ID)

当然,包含病毒的文件可能总是会出现问题,病毒会感染下载文件的机器,但这确实超出了这个问题的范围,并且不会以任何方式影响服务器本身。

关于php - 此代码方法中的安全缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com