Security: Integrace KCFinderu a expirace session
- jtousek
- Člen | 951
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.
- contineo.cz
- Člen | 2
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
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;
}