如果我有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);
}
?>
欢迎提出建议!
答案 0 :(得分:1)
这不是白名单。白名单是将$file
与允许的文件名“列表”进行比较。并回答你的问题,不,你正在做什么允许他们在存储服务器上获得任何文件,例如尝试将“../”传递给$file
。
白名单,如果正确实施,将做你想做的事。
答案 1 :(得分:1)
它会阻止人们访问mainSite.com上的数据,但它不会将人员限制在images文件夹中。有人可以这样做:
$file = '../whatever_folder_on_mystorage_site';
您正在做的所有事情是在使用file_get_contents
进行访问的前缀。
由于您要检索图像,因此您可以使用actaully白名单某些扩展名。只允许用户访问某些扩展名,如.jpg,.png等...