<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentáře k příspěvku: Nenechte si uhodnout Session ID</title>
	<atom:link href="http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid</link>
	<description>Dokonalosti není dosaženo tehdy, když už není co přidat, ale tehdy, když už nemůžete nic odebrat. (Antoine de Saint-Exupéry)</description>
	<lastBuildDate>Fri, 04 Jun 2010 08:43:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Od: Petr Suchý</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-794</link>
		<dc:creator>Petr Suchý</dc:creator>
		<pubDate>Tue, 30 Sep 2008 11:39:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-794</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[14] Samozřejmě, protože hašovací funkce má stejný výstup pro stejný vstup &#8211; pokud tedy v jednom microtime přijde více požadavků, tak bude mít hašovací funkce 100% kolizní stav. V podobném případě je dobré přidat nějaké unikátní ID k hašovanému základu.</p>
</description>
		<content:encoded><![CDATA[
<p>[14] Samozřejmě, protože hašovací funkce má stejný výstup pro stejný
vstup – pokud tedy v jednom microtime přijde více požadavků, tak bude
mít hašovací funkce 100% kolizní stav. V podobném případě je dobré
přidat nějaké unikátní ID k hašovanému základu.</p>

<!-- by Texy2! -->]]></content:encoded>
	</item>
	<item>
		<title>Od: starenka</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-793</link>
		<dc:creator>starenka</dc:creator>
		<pubDate>Mon, 29 Sep 2008 19:05:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-793</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[8] Muzu potvrdit. Sice nechapu jak se to mohlo stat, ale na pokud jsem generoval jmena uploadovanejch souboru jako sha1(microtime()) dochazelo ke kolizim.</p>
</description>
		<content:encoded><![CDATA[
<p>[8] Muzu potvrdit. Sice nechapu jak se to mohlo stat, ale na pokud jsem
generoval jmena uploadovanejch souboru jako sha1(microtime()) dochazelo ke
kolizim.</p>

<!-- by Texy2! -->]]></content:encoded>
	</item>
	<item>
		<title>Od: NN</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-334</link>
		<dc:creator>NN</dc:creator>
		<pubDate>Tue, 24 Jun 2008 17:25:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-334</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;abych byl konkrétnější &#8211; pokud bude mít &quot;někdo&quot; dostatečné znalosti a s tím dostatečné možnosti, tak tě před prvotním brutal atakem nic neochrání (chci se robotem přihlásit &#8211; a jak toto  ochránit neřešíme) a pokud budeš blokovat IP adresy můžeš zavařit serveru (požadavků na přihlášení budu mít z proxin mnoho a uděláš si to sám). Otázku mám zda se o prolomení bude někdo snažit. &#8211; výsledek těchto kroků mi tedy dávají jedinný možný způsob jak získat přístup do aplikace &#8211; vyplňovat ti formulář pro přihlášení &#8211; a pokud jsme u toho toto vyřešit znamená provozovat přihlašovací skript na neznámé doméně. (zajímal by mě tvůj názor, ale znáš to&#8230;)</p>
</description>
		<content:encoded><![CDATA[
<p>abych byl konkrétnější – pokud bude mít „někdo“ dostatečné
znalosti a s tím dostatečné možnosti, tak tě před prvotním brutal
atakem nic neochrání (chci se robotem přihlásit – a jak toto ochránit
neřešíme) a pokud budeš blokovat IP adresy můžeš zavařit serveru
(požadavků na přihlášení budu mít z proxin mnoho a uděláš si to
sám). Otázku mám zda se o prolomení bude někdo snažit. – výsledek
těchto kroků mi tedy dávají jedinný možný způsob jak získat přístup
do aplikace – vyplňovat ti formulář pro přihlášení – a pokud jsme
u toho toto vyřešit znamená provozovat přihlašovací skript na neznámé
doméně. (zajímal by mě tvůj názor, ale znáš to…)</p>

<!-- by Texy2! -->]]></content:encoded>
	</item>
	<item>
		<title>Od: NN</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-333</link>
		<dc:creator>NN</dc:creator>
		<pubDate>Tue, 24 Jun 2008 16:06:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-333</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;tady to, ale není za jistých okolností k ničemu. Je třeba pokusit se zabezpečit vše i z jiných hledisek</p>
</description>
		<content:encoded><![CDATA[
<p>tady to, ale není za jistých okolností k ničemu. Je třeba pokusit se
zabezpečit vše i z jiných hledisek</p>

<!-- by Texy2! -->]]></content:encoded>
	</item>
	<item>
		<title>Od: Jan Tichý</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-308</link>
		<dc:creator>Jan Tichý</dc:creator>
		<pubDate>Wed, 18 Jun 2008 18:39:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-308</guid>
		<description><p>&lt;!&#8211;texy&#8211;&gt;[10] Díky za postřeh, v uvedeném smyslu jsem aktualizoval text článku.</p>
</description>
		<content:encoded><![CDATA[
<p>[10] Díky za postřeh, v uvedeném smyslu jsem aktualizoval text
článku.</p>

<!-- by Texy2! -->]]></content:encoded>
	</item>
	<item>
		<title>Od: dgx</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-62</link>
		<dc:creator>dgx</dc:creator>
		<pubDate>Fri, 01 Feb 2008 16:18:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-62</guid>
		<description><p>[9] zkusme to spočítat. Z praxe mám vyzkoušené, že návštěvnost/počet zobrazení ve špičce/hod odpovídá asi desetině až osmině návštěvnosti/pageviews za den. Takže server s (malým) počtem 10.000 stránek za den má ve špičce cca 10.000/8 = 1250 stránek. Tj cca stránku za každé tři vteřiny.</p>
<p>Dále podle zdrojáků PHP se generátor inicializuje pomocí funkce gettimeofday(), která vrací čas s přesností na mikrosekundy. Otázka je, s jakým rozlišením skutečně pracuje. Dejme tomu, že s plným. Pak by pravděpodobnost byla 1/3mil. Vzhledem k návštevnosti by ke kolizi došlo každých 300 dní.</p>
<p>Na rovinu, ve hře je ještě několik dalších faktorů, které mohou celý ten výpočet rozcupovat na kousky. Ale něco na tom možná bude, protože jsem si právě teď při průzkumu zdrojových kódů PHP všiml, jak se v souboru session.c generuje SID:</p>
<p>hashovaci_fce(REMOTE_ADDR . microtime . combined_lcg) </p>
<p>:-)</p>
</description>
		<content:encoded><![CDATA[<p>[9] zkusme to spočítat. Z praxe mám vyzkoušené, že návštěvnost/počet zobrazení ve špičce/hod odpovídá asi desetině až osmině návštěvnosti/pageviews za den. Takže server s (malým) počtem 10.000 stránek za den má ve špičce cca 10.000/8 = 1250 stránek. Tj cca stránku za každé tři vteřiny.</p>
<p>Dále podle zdrojáků PHP se generátor inicializuje pomocí funkce gettimeofday(), která vrací čas s přesností na mikrosekundy. Otázka je, s jakým rozlišením skutečně pracuje. Dejme tomu, že s plným. Pak by pravděpodobnost byla 1/3mil. Vzhledem k návštevnosti by ke kolizi došlo každých 300 dní.</p>
<p>Na rovinu, ve hře je ještě několik dalších faktorů, které mohou celý ten výpočet rozcupovat na kousky. Ale něco na tom možná bude, protože jsem si právě teď při průzkumu zdrojových kódů PHP všiml, jak se v souboru session.c generuje SID:</p>
<p>hashovaci_fce(REMOTE_ADDR . microtime . combined_lcg) </p>
<p>:-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: Jan Tichý</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-60</link>
		<dc:creator>Jan Tichý</dc:creator>
		<pubDate>Fri, 01 Feb 2008 14:43:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-60</guid>
		<description><p>[5][6] Když to bereš takhle, tak cookie pro permanentní přihlášení skutečně může mít hodnotu SID, tomu nic nebrání. Jak jsem ale už psal, pro jakýkoliv token obecně to vhodné není.</p>
<p>[6][7] S nulou na začátku to byl samozřejmě jenom jednoduchý ukázkový příklad pro účely článku.</p>
<p>[8] Otázka je, jak moc pravděpodobná tahle situace je. Nicméně dobrá, buďme ještě papežštější než papež. Pro případ paralelního běhu aplikace na více strojích najednou lze navíc přidat ještě IP adresu daného serveru. Pro případ současného přístupu dvou lidí za jednou IP adresou můžeme přidat třeba User-Agenta. Další nápady? :)</p>
</description>
		<content:encoded><![CDATA[<p>[5][6] Když to bereš takhle, tak cookie pro permanentní přihlášení skutečně může mít hodnotu SID, tomu nic nebrání. Jak jsem ale už psal, pro jakýkoliv token obecně to vhodné není.</p>
<p>[6][7] S nulou na začátku to byl samozřejmě jenom jednoduchý ukázkový příklad pro účely článku.</p>
<p>[8] Otázka je, jak moc pravděpodobná tahle situace je. Nicméně dobrá, buďme ještě papežštější než papež. Pro případ paralelního běhu aplikace na více strojích najednou lze navíc přidat ještě IP adresu daného serveru. Pro případ současného přístupu dvou lidí za jednou IP adresou můžeme přidat třeba User-Agenta. Další nápady? :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: dgx</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-59</link>
		<dc:creator>dgx</dc:creator>
		<pubDate>Fri, 01 Feb 2008 12:00:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-59</guid>
		<description><p>Jen drobnost &#8211; pokud generátor pseudonáhodných čísel se inicializuje pouze podle aktuálního času, může dojít k tomu, že dva requesty probíhají (z pohledu rozlišovací schopnosti té časové fce) ve stejný okamžik a dojde k vygenerování stejného ID. Není proto špatné přidat ještě entropii například v podobě: md5(xyrand() . $_SERVER[&#039;REMOTE_ADDR&#039;]) apod. Tady je (ad [5]) už použití hashovací funkce nutností, protože přídavek obvykle nesplňuje podmínky náhodného čísla.</p>
<p>Jak je který generátor implementovaný je nelepší mrknout do zdrojáků PHP. Spoléhat se na dostatečnou přesnost generátoru času nelze, podobný omyl způsobil, že na Pentiích nad 200 MHz přestaly fungovat aplikace psané v Turbo Pascalu.</p>
</description>
		<content:encoded><![CDATA[<p>Jen drobnost &#8211; pokud generátor pseudonáhodných čísel se inicializuje pouze podle aktuálního času, může dojít k tomu, že dva requesty probíhají (z pohledu rozlišovací schopnosti té časové fce) ve stejný okamžik a dojde k vygenerování stejného ID. Není proto špatné přidat ještě entropii například v podobě: md5(xyrand() . $_SERVER['REMOTE_ADDR']) apod. Tady je (ad [5]) už použití hashovací funkce nutností, protože přídavek obvykle nesplňuje podmínky náhodného čísla.</p>
<p>Jak je který generátor implementovaný je nelepší mrknout do zdrojáků PHP. Spoléhat se na dostatečnou přesnost generátoru času nelze, podobný omyl způsobil, že na Pentiích nad 200 MHz přestaly fungovat aplikace psané v Turbo Pascalu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: paranoiq</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-58</link>
		<dc:creator>paranoiq</dc:creator>
		<pubDate>Fri, 01 Feb 2008 11:35:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-58</guid>
		<description><p>ahoj,</p>
<p>..while ($token{0} == &#039;0&#039;);</p>
<p>pokud by šlo o distribuovaný útok, tak útočník může snadno odhalit tvoje pravidlo. proto by bylo lepší:</p>
<p>..while (moje_tajna_checksum_funkce($token) == &#039;0&#039;);</p>
</description>
		<content:encoded><![CDATA[<p>ahoj,</p>
<p>..while ($token{0} == &#8216;0&#8242;);</p>
<p>pokud by šlo o distribuovaný útok, tak útočník může snadno odhalit tvoje pravidlo. proto by bylo lepší:</p>
<p>..while (moje_tajna_checksum_funkce($token) == &#8216;0&#8242;);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Od: zaachi</title>
		<link>http://www.phpguru.cz/clanky/nenechte-uhodnout-sid/comment-page-1#comment-57</link>
		<dc:creator>zaachi</dc:creator>
		<pubDate>Fri, 01 Feb 2008 10:55:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.phpguru.cz/clanky/nenechte-uhodnout-sid#comment-57</guid>
		<description><p>Proc vymyslet neco co uz je davno implemtovano.<br />
Session_id je dost bezpecne a generuje dostatecne nahodne tokeny. </p>
<p>&quot;Důležité je, že zvolené pravidlo musí zůstat v tajnosti&quot;<br />
- takze to tvoje uz v tajnosti neni, co? :-)</p>
</description>
		<content:encoded><![CDATA[<p>Proc vymyslet neco co uz je davno implemtovano.<br />
Session_id je dost bezpecne a generuje dostatecne nahodne tokeny. </p>
<p>&#8222;Důležité je, že zvolené pravidlo musí zůstat v tajnosti&#8220;<br />
- takze to tvoje uz v tajnosti neni, co? :-)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
