Jak na bezpečené Texy – pouze formátování textu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- motorcb
- Člen | 552
Zdravím,
mám diskusi kde chci povolit Texy pro všechny uživatele.
protected function createTemplate( $class = NULL )
{
$template = parent::createTemplate( $class );
$template->registerHelper( 'dayNameShortCZ', callback( new \DateCZ(), 'getShortDayName' ) );
$texy = new Texy();
//Texy\TexyConfigurator::safeMode($texy);
$template->registerHelper('texy', callback($texy, 'process'));
return $template;
}
Latte:
{!$texyContent|texy}
Je tento způsob bezpečný? Nechci aby uživatelé vkládali odkazy, JS. Aby mohli pouze formátovat text, popřípadě vkládat obrázky. Jak na to?
Díky
- David Matějka
- Moderator | 6445
TexyConfigurator::safeMode by mel vstup zabezpecit dostatecne, viz kod (pripadne si pak muzes zcela vypnout podporu tagu, odkazu atd.)
co se vypisovani v latte tyce, misto vykricniku by se od 2.1 mel pouzivat modifikator |noescape
{$content|texy|noescape}
nebo muze helper vracet Nette\Utils\Html
$template->registerHelper('texy', function($text) use($texy) {
return \Nette\Utils\Html::el()->setHtml($texy->process($text));
});
pak nemusis v sablone vypinat escapovani
Editoval matej21 (19. 8. 2014 15:55)