Přeskočit na obsah

Hledej:


elfineer | blog

@PavelHoralik @ischiam tomu obyčejně hráblo, ne? :)
twitter.com/elfineer


zář 06 04

Můj boj s Holanďany (update)

Datum a čas pondělí 4. září 2006, 22:55
Tagy sudoku webdesign css javascript bookmarklet programovani
Komentáře 8 (přejít na komentáře, přidat nový, sledovat pomocí RSS)
Přečteno 7432×
Popis Začátkem srpna jsem spustil server One-Sudoku.com – přišlo mi to jako poměrně zajímavý nápad, ne moc pracná realizace a lehce zapamatovatelná doména byla volná. Je pravda, že podobných webů pár existuje, například Sudoku League, ale svůj web jsem myslel spíš jako web, na kterém si můžete v práci zahrát sudoku a jako bonus je zde žebříček, než nějakou supersoutěž.

Náhled One-Sudoku.com

Protože tam je žebříček zemí, očekával jsem nějaké pokusy o manipulaci (jako např. u seti@home, i když samozřejmě v menší míře), ale čekal jsem spíš například SQL injection při úpravě bodů apod. Před řešením nějakého šikovného studenta (nejspíš informatiky) z Nizozemí ovšem smekám.

Maks napsal jednoduchý bookmarklet, který si stačilo přetáhnout do oblíbených, otevřít můj web a spustit. Maks je kluk šikovná, celé to má 1 kB a funguje mnohem rychleji než jiné javascriptové solvery.

Zdrojový kód první verze Maksova bookamerkletu

Asi bych si toho nevšimnul, kdybych neměl radost z nárustu návštěvnosti a ve statistikách serveru nepátral po tom, kdo na mě odkázal :-) (takový podvod mě nenapadl, naivně jsem myslel, že se o mě zmínil nějaký NL blog, takže není nic divného na tom, že NL se vyhouplo z 23. místa na 4. během jednoho dne).

Nápad to byl vážně dobrý, protože opravdu to byli hráči z různých IP adres, v různých časech a bylo vidět, že nic podezřelého se databázi nestalo.

Moje řešení bylo poněkud naivní. Bookmarklet přistupoval vždy na input 1–1, 1–2… 1–81, jak se jednotlivá políčka jmenovala. Navíc by si asi Maks v JavaScriptu neškrtl, kdyby zadání nebylo jako input se zablokovaným vstupem, ale jako obyčejný text (já zvolil radši input, protože se to pak lépe stylovalo). Změnil jsem jméno políček na -1…, přičemž dlouhý hnusný kód byl generován jako číslo obsahující datum, čas, kus IP adresy a z toho md5 otisk. Tento kód se pak v SESSION předal stránce s kontrolou, aby věděla, na jakých proměnných řešení hledat.

Náhled One-Sudoku.com

Ozkoušel jsem bookmarklet, zaradoval se, že už nejde, vymazal z databáze všechny podezřelé hráče z NL, poupravil počet bodů a šel s pocitem dobře odvedené práce koukat na ordinaci :).

Maks byl asi ten den v lepším duševním stavu, protože na jeho webu už byla při druhých reklamách odpověď (v. 1.3) a Makse rychle napadlo, že na políčka formuláře lze přistupovat nejen podle jména, ale i podle indexu.

Mojí odpovědí bylo velmi provizorní vložení

<input type="hidden" name="fuck_you_maks" />, které překonal velmi rychle (v. 1.4, 1.5), a po něm <input type="text" name="..-82" />.

Když bookmarklet v. 1.5 nefungoval, začínal jsem mít dobrý pocit, jak ho to konečně přestalo bavit a jak jsem vyhrál. Dokonce i web smazal.

Trvalo mi ‚jen‘ asi 24 hodin, než mi došlo, že smazaná stránka by měla hlásit 404 Page Not Found a ne 403 Forbidden. Chyba 403 by dávala smysl, kdyby odkaz vedl na adresář, ze kterého zmizel index.html (či obdoba), ale ne, když odkaz vedl rovnou na .html.

Makse asi napadlo, že když doména patří podle výpisu někomu z ČR a někdo z ČR se poměrně často kouká na jeho web, asi nebude špatný nápad ho v .htaccessu zablokovat.

Anonymyš prozradila existenci verze 1.6, která víceméně fungovala až do dnešního večera.

Zatím poslední řešení se mi moc nelíbí a možná se na něj najde odpověď v JS: třetí řádek je falešný, obsahuje vždy náhodně vygenerovaná čísla 1..9 a inputy se stejnými jmény jsou zde ještě jednou – při odeslání formuláře se tak odešlou ty nižší (pozdější), ale pokud bude bookmarklet přistupovat podle indexu nebo jména, dostane náhodné hodnoty z vyšších (dřívějších, falešných). Celý třetí řádek je pak pomocí CSS schován.

Vadí mi na tom, že to je poměrně nepřístupné řešení – sice nemyslím, že by někdo s hlasovou čtečkou hrál na mém webu sudoku, ale třeba PDA/mobil falešný řádek neschová.

Pokud tohle maks překoná, mám připravené ještě jedno řešením, které už je snad nepřekonatelné (alespoň ne čistě v JS). V každém řádku bude jedno falešné políčko a to, jestli se má schovat, určí CSS soubor vygenerovaný PHP skriptem (opět dostane v SESSION vědět, co zrovna tento uživatel má vidět). Nebudou se tam pak žádná jména opakovat, políček bude z pohledu HTML devadesát a bez přečtení CSS nepůjde poznat, jestli je pravé nebo falešné.

Ale doufám, že až na to nedojde :-)…

Statistiky serveru

Update (den poté)

Asi nejsem sám, kdo se umí kouknout do statistik :-). Teď je ten web zablokován nějak lépe, nedá se tam dostat ani přes anonymizéry ani přes nějaké proxy z proxy4free. Tak budu chvíli doufat :-).

pondělí 4. září 2006, 22:55 - 7432× shlédnuto - RSS komentářů - tagy: sudoku webdesign css javascript bookmarklet programovani



?>


Nepřehlédněte

elfineer - úterý 5. září 2006, 16:13 - web - #

No ještě by šlo generovat obrázek na pozadí nebo celý ve Flashi, ale to teda nikdy :)

Fred - středa 6. září 2006, 16:23 - web - #

Díky za skvělou zábavu. Nemám tak dobré znalosti js, nicméně jsem si našel nějaké scriptíky, které jsem použil a chvíli (8 hodin) jsem si s tím hrál. Výsledek je tady http://xy.wz.cz/…ple­7/sudoku/ , není to tak elegantní jako Maksův bookmarklet, který ty data tahal rovnou ze stránky, ale dá se to s tím ošidit velmi rychle. Stačí přetáhnout přes tabulku se sudoku a vyplnit. Má to autonextfocus a na prázdné pole se používá mezerník. Asi bych měl přidat ješte nějaký resizer. Hrál jsem si s tím jen proto, že mi snaha odolat takovýmhle útokům připadala marná. Spíš by to chtělo asi nějaký text, jako Zamyslete se nad sebou a buďte poctiví. Kdyžtak mě rovnou smažte z databáze z dnešních výsledků, byl to pouhý test.

elfineer - středa 6. září 2006, 19:36 - web - #

Teda… :) Fakt dobry… No je jasny, ze prepsanim do jakyhokoliv solveru to vyresit jde, i kdyz tys to povysil na vyssi uroven :).

Nejak moc se tomu branit neda, nejak moc tu databazi procesavat nebudu, u me nejlepsi stejne nic nedostane. Jen jsem nechtel, aby to Maks a spol. resili jednim tlacitkem.

pan Cuketka - čtvrtek 7. září 2006, 00:45 - web - #

…docela ftipný. já soobně bych je zrušil natvrdo, holandsko prostě z žebřícku vyřadil + přidal nějakou pěknou provokativní formulku s holandskou vlakou „holanďanům sudoku luštit zakázáno“ ;)

Fred - čtvrtek 7. září 2006, 09:15 - web - #

Na ten web se taky nemohu dostat, ale koukám, že sem chodí docela často nějaký heaven student. zajímavé Maksův scriptík byl na hell student…, že by Jekyll & Hyde ;-)

mka - středa 20. září 2006, 16:09 - #

A co takhle zkusit to jinak – at si to klidne nekdo resi nejakym bookmarkletem, kdyz to odesle, pekne mu podekujeme a pogratulujeme, nicmene do statistik zapocteme jenom ty, kterym lusteni trvalo nejakou minimalni dobu.

elfineer - středa 20. září 2006, 17:07 - web - #

Diky, to je hodne chytrej napad :)… To zkusim a napisu, jak to jde, jeste jednou dik.

Nejgenialnejsi reseni byvaji ty nejjednodussi…

wanglili - před 3 dny, 06:35 - web - #

michael kors outlet clearance cheap oakley sunglasses cheap ugg boots canada goose outlet christian louboutin shoes mulberry bags mbt outlet michael kors outlet online canada goose jackets canada goose jackets sale adidas outlet online michael kors handbags lebron shoes coach outlet online store ray ban sunglasses outlet nike outlet coach outlet michael kors outlet clearance oakley sunglasses mbt shoes clearance outlet canada goose outlet polo ralph lauren adidas shoes canada goose outlet canada goose outlet uggs outlet polo ralph lauren outlet ugg outlet store ugg boots clearance polo shirts adidas nmd coach outlet moncler outlet coach outlet online canada goose michael kors outlet canada goose outlet oakley sunglasses wholesale cheap ugg boots ferragamo shoes christian louboutin sale adidas outlet yeezy boost 350 coach factory outlet online uggs outlet ugg outlet ugg outlet cheap mlb jerseys cheap uggs kate spade handbags cheap jordans canada goose outlet fitflops clearance uggs outlet online canada goose pandora rings canada goose jackets mulberry handbags oakley sunglasses canada goose polo shirts vintage nhl jerseys ralph lauren outlet cheap ugg boots ugg boots clearance cheap ugg boots canada goose outlet mbt shoes ugg boots adidas yeezy shoes michael kors outlet clearance coach outlet canada goose outlet store fred perry polo ralph lauren canada goose outlet store pandora jewelry true religion outlet canada goose outlet ray ban sunglasses mont blanc outlet canada goose jackets ugg outlet ugg outlet ralph lauren true religion outlet ed hardy outlet coach factory outlet canada goose jackets mont blanc outlet uggs outlet pandora rings uggs outlet online nike outlet lacoste shirts ugg boots ugg outlet canada goose mcm backpack polo outlet canada goose jackets coach outlet uggs outlet polo outlet uggs on sale mlb jerseys mont blanc pens for sale uggs outlet tory burch sandals coach factory outlet canada goose outlet online canada goose jackets nike trainers christian louboutin outlet michael kors outlet clearance uggs outlet coach factory outlet ugg outlet ugg boots canada goose jackets christian louboutin shoes canada goose lacoste outlet uggs outlet ray ban polo shirts men coach outlet store online nike outlet store coach factory outlet ugg outlet adidas nmd r1 uggs outlet ugg outlet cheap ray ban sunglasses canada goose outlet online canada goose outlet coach outlet online oakley sunglasses for men valentino shoes polo ralph lauren canada goose outlet store canada goose jackets ray ban sunglasses for men cheap oakley sunglasses canada goose jackets yeezy boost canada goose outlet canada goose jackets ugg outlet online mlb jerseys wholesale ugg boots clearance uggs outlet canada goose jackets michael kors outlet clearance ugg outlet ralph lauren outlet canada goose outlet online cheap ugg boots pandora jewelry sale ralph lauren pas cher uggs outlet nike shoes outlet michael kors outlet store ralph lauren asics shoes polo ralph lauren cheap ugg boots michael kors handbags canada goose jackets uggs outlet michael kors outlet michael kors outlet coach outlet store online canada goose michael kors outlet polo ralph lauren outlet canada goose ugg boots uggs outlet online kate spade outlet store polo ralph lauren polo outlet pandora jewelry polo ralph lauren outlet online 20171117wanglili

Komentáře používají Texy! syntaxi.

"odkaz":http://kam.vede.cz, *zdůrazněné (em)*, **zdůrazněnější (strong)**, citace


Hledání

Mikroblog

GOTO TWITTER
GOTO POSTEROUS

Reklama

Nejčtenější

Reklama

Kvalitní domény, levný webhosting
Vyzkoušejte spolehlivý Český hosting. www.cesky-hosting.cz

Facebook tipy

Moje weby

Napište mi vzkaz