Security: Integrace KCFinderu a expirace session

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jtousek
Člen | 951
+
0
-

Právě jsem našel bezpečnostní díru v použití KCFinderu s Nette. Typicky se při přihlášení uživatele volá něco jako tohle:

$this->getUser()->setExpiration('+ 20 minutes', TRUE);
\Model\KCFinder::register(); //nastaví $_SESSION['KCFINDER']

Bezpečnostní díra je v tom, že když vyexpiruje session (což si hlídá Nette) tak uživatel je sice odhlášen, do systému již nemůže, ale do KCFinderu stále má přístup. Je to samozřejmě tím, že Nette si tu expiraci řeší samo a KCFinder tedy nepozná, že session již není platná.

Nad řešením problému jsem ještě nepřemýšlel, dávám to sem jednak jako dotaz, druhak jako upozornění pro všechny, kteří též používají KCFinder.

vcernik
Člen | 32
+
0
-

Vůbec bych to neřešil přes SESSION. V config.php v KCFinderu si zavolám container a zjistím, jestli uživatel je přihlášen :)

contineo.cz
Člen | 2
+
0
-

vcernik napsal(a):

Vůbec bych to neřešil přes SESSION. V config.php v KCFinderu si zavolám container a zjistím, jestli uživatel je přihlášen :)

Rád bych požádal o příklad zavolání containeru ze souboru config.php. Díky.

vcernik
Člen | 32
+
+1
-

contineo.cz napsal(a):
Rád bych požádal o příklad zavolání containeru ze souboru config.php. Díky.

Tohle mám na konci config.php:

require_once __DIR__ . '/../../libs/autoload.php';


$configurator = new Nette\Config\Configurator;
$configurator->setTempDirectory(__DIR__ . '/../../temp');

$container = $configurator->createContainer();
$user = $container->user;

if($user->isLoggedIn()){
 $_CONFIG['disabled']=false;
}
else{
 $_CONFIG['disabled']=true;
}