PHP:file_get_contents()上的白名单是否可以防止注入攻击?

时间:2013-12-02 17:41:28

标签: php security file-get-contents

如果我有2个网站:

  • 存储我的图片的存储网站(myStorageSite.com/images /),

  • 主站点(mainSite.com)。

我希望用户提供一个文件名($ file)来获取myStorageSite.com的images目录中的任何文件。 (用户知道文件名)。

这个“白名单”代码是否允许用户从images目录获取任何文件,但阻止他们获取myStorageSite或mainSite上的任何其他文件?

<?php

function dataURL($file, $mime){
  $white = 'http://myStorageSite.com/images/';
  $contents = file_get_contents($white . $file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}

?>

欢迎提出建议!

2 个答案:

答案 0 :(得分:1)

这不是白名单。白名单是将$file与允许的文件名“列表”进行比较。并回答你的问题,不,你正在做什么允许他们在存储服务器上获得任何文件,例如尝试将“../”传递给$file

白名单,如果正确实施,做你想做的事。

答案 1 :(得分:1)

简单地说:不完全是。

它会阻止人们访问mainSite.com上的数据,但它不会将人员限制在images文件夹中。有人可以这样做:

$file = '../whatever_folder_on_mystorage_site';

您正在做的所有事情是在使用file_get_contents进行访问的前缀。

由于您要检索图像,因此您可以使用actaully白名单某些扩展名。只允许用户访问某些扩展名,如.jpg,.png等...