通过相对URL限制用户文件访问

时间:2016-12-17 23:21:37

标签: php .htaccess yii2 httpd.conf

我使用Yii2 php框架设置了一个cms应用程序。但是,我遇到过这样的情况:如果用户可以创建包含图像或文档的帖子,她/他可以在WYSIWIG编辑器中查看该帖子的html源代码,并将src链接更改为其他用户的内容。例如,如果Fred的链接看起来像这样userfiles / fred / myimage.png他可以查看html源代码并将其更改为userfiles / john / anotherimage.png。

我怎样才能让Fred只能在他的cms帖子中使用相对Url访问userfiles / fred?

我曾尝试过研究.htaccess,但我对如何将其应用于登录到我的应用程序的特定用户感到困惑。

1 个答案:

答案 0 :(得分:0)

  1. 不要将您的文件存储在@web,而是更高级别
  2. 编写自定义操作,流式传输所请求的文件。你可以在这里处理权限(Yii::$app->user->can('doit')),发送可以是:

    if (file_exists($filename)) {
        Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
        Yii::$app->response->headers->add('Content-Type', FileHelper::getMimeTypeByExtension($filename));
        Yii::$app->response->headers->add('Content-Length', filesize($filename));
    
        return file_get_contents($filename);
    } else {
        throw new yii\web\NotFoundHttpException($filename);
    }
    
  3. 请参阅getMimeTypeByExtension