Stránka 2 z 9

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 05 říj 2013, 16:43
od Martin.Kucera
Petr Vileta píše:Zajímalo by mě, proč ta funkce povolení html, a dokonce i php, v dokuwiki vůbec existuje, když to je tak nebezpečné. To je autor takový idiot? :)
Spíš nepředpokládá, že by někdo dokuwiki používal pro prási s údaji vyžadujícími zabezpečení; a pokud už ji používá, tak že ví, co musí zakázat, aby nevznikly bezpečnostní díry.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 05 říj 2013, 16:54
od Jiri.Kaderavek
HTML samozřejmě mění každý správce obsahu ve většině redakčních systémů. To, že je povoleno vkládat html i třeba s javascriptem je jedna věc, to, kdo jej může vkládat a zda se případně provede ještě další kontrola na vložený kód je věc druhá. Ale protože se to Krtkovi nechce řešit, tak to dopadne jako s aplikací pro evidenci členů. Místo, aby provedl fix a zajistil provozuschopnost, tak to prostě vypne a Piráti, běžte se klouzat. Mmchd. vkládat lze i PHP kód.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 05 říj 2013, 17:34
od Petr.Vileta
Jiri Kaderavek píše:HTML samozřejmě mění každý správce obsahu ve většině redakčních systémů. To, že je povoleno vkládat html i třeba s javascriptem je jedna věc, to, kdo jej může vkládat a zda se případně provede ještě další kontrola na vložený kód je věc druhá. Ale protože se to Krtkovi nechce řešit, tak to dopadne jako s aplikací pro evidenci členů. Místo, aby provedl fix a zajistil provozuschopnost, tak to prostě vypne a Piráti, běžte se klouzat. Mmchd. vkládat lze i PHP kód.
Přesně tak :D
Jak jsem se OFFTOPICjá, mizerný programátor, nestarající se o bezpečnost kódu dočetl, tak povolení html umožňuje cross site scripting a podle příkladů tam uvedených jsem došel k asi hloupému názoru, že to by se dalo jednoduše eliminovat pomoci vhodného nastavení mod_rewrite v Apache. Nejsem v tom žádný expert, ale snad by nebyl takový problém v URL znaky < a > nahradit html entitami < a > a pak se ten skript nevykoná, ale zobrazí. A možná by šlo vymyslet něco ještě chytřejšího.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 05 říj 2013, 20:27
od Jiri.Kaderavek
Tady jde o to, že když se to zapínalo, tak byla omezená správa obsahu na skupinu webmasters, což byli prověření členové. Pokud nyní může obsah vkládat i RegP, pak se situace samozřejmě mění. Proto je zapotřebí vydefinovat, které skupiny mají právo html vkládat, případně zda povolit <script> tag ve vloženém html, a pokud ano, zda toto opět nelimitovat na nějaké skupiny. Optimálně tedy použít renderovací plugin /lib/plugins/hspan/ a v souboru renderer.php přetížit metodu html() objektu Doku_renderer_xhtml. Kód, který omezí vkládání html na určitou skupinu lze nalézt např. v metodě render() pluginu phpwikify. Výsledná metoda v /lib/plugins/hspan/renderer.php by pak mohla vypadat nějak takto:

Kód: Vybrat vše

function html($text, $wrapper='code') 
{
	global $conf;
	global $DWPID; /* this is set if used thru display_wiki_page, need check another embed plugins - embed, include ... */
	global $ID;
	global $USERINFO;

	if($conf['htmlok']) {

		$pageid = @$DWPID;
		if (!$pageid) $pageid = $ID;
		$lastchange = p_get_metadata($pageid, 'last_change'); /* get info about last editor */

		if (!is_array($lastchange)) /* if not changed in dw, then ok - */ {
			$this->doc .= $text; /* include html */
			return;
		}
	
		$editor = $lastchange['user'];
		if (auth_isMember('@admin', $editor, $USERINFO['grps'])) /* check if modified by @admin */ {
			$this->doc .= $text; /* include html */
			return;
		}
			
	}

	$this->doc .= p_xhtml_cached_geshi($text, 'html4strict', $wrapper);

}

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 06 říj 2013, 00:18
od Petr.Vileta
OFFTOPICJá bych věděl, kdo by měl být 14.2.2014 zvolen vedoucím TO, ale on bude asi proti :cry:

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 07 říj 2013, 00:15
od Lukas.Novy
Petre ne, mod_rewrite to neopravi.
Jirko
- php vkladat nejde
- evidence je broken by design a neopravitelna, tohle je jiny pripad a navic evidence je v tuto chvili pristupna avsak byl sem radeji, kdyz se to nevedelo
- stravil sem nad analyzou dobrych par hodin a postup, ktery popisuje jsme samozrejme take zvazoval, bohuzel by nas to nezachranilo (i zminovany phpwikify jasne varuje, ze je treba duverovat VSEM osobam s pravem uprav, neni totiz tezke tohle reseni obejit).
- nicmene udelame neco podobneho a minimalne si Vaclavovi usetril kus casu vyvoje, takze diky za prispevek.

@Vaclave, dokazes upravit nas renderer, tak aby xhtml renderoval jenom kdyz v metadatu render_html (coz by bylo pole) existuje md5hmac obsahu toho html tagu? Schvalovani by bylo na pozadani, autor by stranku upravil do cilove podoby a pak obnovil predchozi verzi. Ja (nebo nekdo delegovany, ale fakt pochybuju :) ) by nasledne udelal review zadaneho snippetu a rucne pridal ten hmac do pole. Autor by potom obnovil zadanou verzi.

Na hmac, pokud by neslo tohle

Kód: Vybrat vše

$hmac = bin2hex(mhash(MHASH_MD5, $data, $key));
Tak pouzij tohle:

Kód: Vybrat vše

function md5hmac ($data, $key)
{
    // RFC 2104 HMAC implementation for php.
    // Creates an md5 HMAC.
    // Eliminates the need to install mhash to compute a HMAC
    // Hacked by Lance Rushing

    $b = 64; // byte length for md5
    if (strlen($key) > $b) {
        $key = pack("H*",md5($key));
    }
    $key  = str_pad($key, $b, chr(0x00));
    $ipad = str_pad('', $b, chr(0x36));
    $opad = str_pad('', $b, chr(0x5c));
    $k_ipad = $key ^ $ipad ;
    $k_opad = $key ^ $opad;

    return md5($k_opad  . pack("H*",md5($k_ipad . $data)));
}
$hmac = bin2hex(md5hmac($data,$key);
Jako $key se pouzije neco definovanyho v config.protected. Soukrome ti pak povim na co jeste musime dat bacha.
Nice to have:
- Udelatko na review a pridavani hmacu do metadata.
- V udelatku prohledavani hmacu ostatnich stranech na duplikaty jako info pro reviewera. (Automaticky nebo bezmyslenkovity schvalovani duplikatu je nebezpecny napr. vzhledem k moznosti udelat <script> s relativnim uri v src)
- Pri ukladani revize by se checknuly vsechny html snippety a pokud by nemeli schvalenej hmac, automaticky by to poslalo zadost o review na mail.
- Auditovani akci v udelatku.

Jak rychle bys to mel?

Po volbach konecne nasadim káju, pres kterou se budou zobrazovat neapprovnuty obsahy html.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 07 říj 2013, 00:48
od Petr.Vileta
Lukas Novy píše:@Vaclave, dokazes upravit nas renderer, tak aby xhtml renderoval jenom kdyz v metadatu render_html (coz by bylo pole) existuje md5hmac obsahu toho html tagu? Schvalovani by bylo na pozadani, autor by stranku upravil do cilove podoby a pak obnovil predchozi verzi. Ja (nebo nekdo delegovany, ale fakt pochybuju :) ) by nasledne udelal review zadaneho snippetu a rucne pridal ten hmac do pole. Autor by potom obnovil zadanou verzi.
Nevím kdy to spustíte, ale mohl bych rovnou požádat o schválení všech stránek rozpočtů z tohoto seznamu? Obsah html tagu by se neměl měnit, pokud si nějaký kraj nepřidá rozpočtovou kapitolu. Pak bych to změnit musel a znovu bych požádal o schválení. OFFTOPICBude mi muset někdo vysvětlit, jak se dělá obnovení verze. Zatím umím jen couvat.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 07 říj 2013, 20:49
od Vaclav.Klecanda
IMHO by bylo lepsi zacit pouzivat veci k tomu, k cemu jsou. Tzn. nesnazit se z dokuwiky udelat nastroj "ja umim vsechno". Na tvorbu obsahu stranek je milion jinych, nesrovnatelne uzivatelsky privetivejsich veci, ale my musime pouzit tu nejstarsi, nejzbastlenejsi a nejderavejsi, ktera existuje. Proto
Lukas Novy píše:..., ale dokonce i dlouhodobe a nezvratne poskodit obraz Piratske strany jako strany s vybornou orientaci v informacnich technologiich, pocitacove bezpecnosti.
se mi zda dost absurdni ...
Doufam, ze po volbach rozjedem debatu, kterak stranicke systemy ozivit.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 07 říj 2013, 20:58
od Ondra.kl
Vaclav Klecanda píše:Doufam, ze po volbach rozjedem debatu, kterak stranicke systemy ozivit.
To ti řeknu rovnou ... najdi lidi ... aspoň 20. Kteří budou mít čas a budou tomu rozumět.

Re: Vypnutí (X)HTML v dokuwiki

Napsal: 07 říj 2013, 20:59
od Vaclav.Malek
Navíc (když už/dokud používáme dokuwiki) jsem chtěl to html vypnout úplně aby se používali "standardní" věci dokuwiki jako pluginy apod. (tzv. někdo potřebuje něco extra --> TO --> plugin) ... protože i když bylo/je povoleno html pro nějakou vyhrazenou skupinu, tak to stejně někdo začne mrvit...