php - 确保file_get_contents($ my_url)不打开本地文件

时间:2013-11-19 05:44:47

标签: php security

创建图像服务器,其中URL必须通过$_GET参数传递。我想知道是否有办法阻止file_get_contents($path)在我的服务器上打开任何本地文件,如果恶意用户决定传入(例如)         “/hosts/my-site/index.php”

除了尝试修改$path变量之外,还有其他方法,但我找不到任何关于这个主题的内容!

编辑:

远程URL示例(下载映像并保存其缓存版本):

http://www.answers4macs.com/wp-content/uploads/2011/03/8edNXtiOWquvd43gaDFsdRWgo1_250.jpg

由于应用程序的性质,我需要将URL传递给服务器。这些文件需要在某个时候下载。

2 个答案:

答案 0 :(得分:0)

  

创建一个图像服务器,其中URL必须通过$ _GET参数传递

请不要这样做。

确保$ _GET参数是包含路径的数据库记录的id,然后您可以根据您控制的记录验证ID。

答案 1 :(得分:0)

首先,使用get参数创建文件路径几乎总是一个糟糕的主意。正如leemo建议的那样,明智的做法是根据您自己的归档方案将文件转储到某处,并跟踪所有内容使用数据库的位置。

但是,作为网络服务器管理的一般问题,您的网络应用运行的用户应具有非常有限的权限。理想情况下,他们不应该访问包含您的Web应用程序的目录之外的任何内容。这些权限在操作系统级别处理。