【发布时间】:2010-10-11 02:56:19
【问题描述】:
大家好,我正在开发一个使用CodeIgniter PHP framework 的照片共享网站。这个想法是人们可以上传他们的照片,管理它们(通过某种文件浏览器,允许他们创建子文件夹,拖动文件等)和编辑它们(一些基本的东西,比如调整大小,旋转和裁剪开始,和稍后,我将添加一些高级功能。
我已经为 CI (Redux Authentication 2 Beta) 实现了第三方身份验证解决方案,我现在正在集成一个 JS/PHP 文件管理器 (AjaxExplorer),但问题是用于管理文件的 PHP 后端 (移动、复制等)过于信任来自 ajax 调用的用户输入。例如,它正在做这样的事情(为了清楚起见进行了简化):
move_uploaded_file($_FILES['upload']['tmp_name'], $root.$username.$_POST['destination_dir']);
如您所见,存在明显的安全问题,因为它盲目地接受用户输入的任何路径!我已经可以看到有人将“../AnotherUser/”之类的内容作为 $_POST['destination_dir'] 值发送。
我的问题是:“沙箱”用户的最佳方式是什么,以便只允许他管理自己的数据?我是否只是验证+过滤输入,希望捕捉到每一个入侵企图?是否有专门用于解决此特定问题的库/包?
我认为这个问题必须在任何(足够成熟的)项目中以某种方式解决,它赋予用户通过网络浏览器管理文件的能力,所以我希望找到一些明确的指导方针(因为有很多关于 SQL 注入、XSS、CSRF 等),但我想我没有使用正确的关键字。
【问题讨论】:
标签: php ajax security file codeigniter