Bezpečnost dotazů na DIBI při čtení, aneb FirePHP dobrý sluha, ale zlý pán
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Saurian
- Člen | 28
Nevím jestli se vyjádřív dostatečně srozumitelně, budu se snažit
.)
Zajímalo by mě, jestli je bezpečné přistupovat k databázi během
„signálu“ či „action/render“ tj.
např.
public function renderDetail($id, $arg1)
{
$info = $this->myModel->getInfoDetail($id, $arg1); // přečte info z databáze (z modelu)
$this->template->info = $info; // data zobrazím v šabloně
}
nebo volání signálu z Ajaxu …
public function handleGetDB($id, $arg1)
{
$this->payload->data = $this->myModel->getDetailData($id, $arg1);
$this->terminate();
}
jednoduchý příklad v modelu …
public function getDetailInfo($id, $arg1)
{
try {
// čistě jen pro příklad, zkrátka jakékoliv volání dibi ...
$result = dibi::query('SELECT id FROM log_bids WHERE %and',array(
array('trade = %i', $id),
array('userid = %i', $userID->id),));
} catch (DibiException $e) {
return self::FAIL;
}
return $result;
}
Jde o to, že pokud mám (nebo kdokoliv jiný) nainstalován „Fire PHP“, vidí pěkně všechny dotazy na databázi ve výsledku. Pokud provedu nějaký zápis u kterého následně obnovím stránky (redirect), je vše v pořádku, ale jak něco přečtu z DB po vykreslení stránek (např. Ajaxové dotazy na DB), je „zle“, uživatel díky Fire-PHP vše vidí a nevím mám si s tím lámat hlavu, nebo ignorovat ?
Můžu vše řešit přes cache, ale celé se to komplikuje (něco by šlo řešit jen těžko)
Moc díky (mám zkrátka obavu o bezpečnost :)