2016-12-17 2 views
0

У меня есть приложение cms с использованием фреймворка Yii2. Тем не менее, я столкнулся с ситуацией, когда пользователь может создать сообщение, которое включает изображения или документы, он/она может посмотреть исходный код html для этого сообщения в редакторе WYSIWIG и изменить ссылку src на другой контент пользователя. Например, если у Fred есть ссылка, которая выглядит как этот userfiles/fred/myimage.png Он может посмотреть источник html и изменить его на userfiles/john/anotherimage.png.Ограничить доступ к файлам пользователей с помощью относительного URL-адреса

Как я могу сделать так, чтобы Фред мог только получить доступ к файлам пользователей/fred с относительными Urls в своих сообщениях cms?

Я пробовал исследовать .htaccess, но я придерживаюсь того, как применить это к определенным пользователям, зарегистрированным в моем приложении.

ответ

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); 
    } 
    

getMimeTypeByExtension см

Смежные вопросы