nefunkcni texy->allowedTags v nette2
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- desss
- Člen | 14
ahoj, pravdepodovne pouze neco prehlizim, nechal jsem se inspirovat par prispevky ve foru (prestoze vyhledavani retezce „texy“ na nette.org je do jiste miry obtizne, protoze najde kdecos kvuli „dibi powered, Texy! powered“ :)
mam tedy nasledujici kod, chtel bych osetrit vstup uzivatele, napr. v navstevni knize, kam ma pristup kazdy – tudiz bych chtel zakazat vsechny html tagy kvuli bezpecnosti (povolit pouze zapisy s hvezdickou)
<?php
basepresenter:
--------------
protected function createTemplate($class = NULL) {
// inicializace texy
$texy = new \Texy();
$texy->encoding = 'utf-8';
$texy->allowedTags = \Texy::NONE;
$texy->allowedStyles = \Texy::NONE;
$texy->setOutputMode(\Texy::HTML4_TRANSITIONAL);
$template = parent::createTemplate($class);
$template->registerHelper('texy', callback($texy, 'process'));
return $template;
}
sablona:
--------
{? $text = "**abcd** <i>avc</i><script>window.alert(1);</script>"; }
{!$text|texy}
?>
vystup je tucne abcd, kurzivou avc a skript se spusti
dekuji za napady
- desss
- Člen | 14
reseni pro budouci generace, staci pridat tento radek:
<?php
$texy->allowed['html/tag'] = FALSE;
?>
- desss
- Člen | 14
moje chyba, neuvedomil jsem si totiz, ze zalezi na poradi prikazu + jsem nakonec pouzil safeMode, ktery by mel dostatecne osetrit vstup uzivatele
<?php
basepresenter:
--------------
protected function createTemplate($class = NULL)
{
// inicializace texy
$texy = new \Texy();
$texy->setOutputMode(\Texy::HTML4_TRANSITIONAL);
$texy->encoding = 'utf-8';
TexyConfigurator::safeMode($texy);
$template = parent::createTemplate($class);
$template->registerHelper('texy', callback($texy, 'process'));
return $template;
}
?>