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 | 3051× |
| 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ěž. |
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
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í
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 :-)…
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 :-).
pátek 4. září 2006, 22:55 - 3051× shlédnuto - RSS komentářů - tagy: sudoku webdesign css javascript bookmarklet programovani
Nezapomeňte si mě přidat do své RSS čtečky, pokud se Vám článek líbil - URL RSS kanálu: http://blog.elfineer.cz/rss.xml (
).
Nepřehlédněte
- Jak mi pomohla sláva iPhonu? (30. 12. 2007)
Pokračování říjnového článku - jak dlouhodobě pomohlo sudoku-serveru zařazení mezi iPhone aplikace na webu Applu?
- Pomůže mi sláva iPhonu? (26. 10. 2007)
Kolikánásobně se zvýší návštěvnost sudoku serveru, pokud vytvořím verzi pro iPhone a odkáže na ní Apple?
- Jak se taky může projevit nedostatek místa na serveru (09. 10. 2006)
To si takle jednou sedím u počítače, spát se mi nechce, protože jsem omylem (nikdo mě nevzbudil) spal do dvanácti, tak uvažuju nad tím, že se kouknu na nějaké simpsony, když tu náhle, milá zpráva…
- Můj boj s Holanďany: vyhrál jsem? (05. 10. 2006)
Díky velmi chytrému postřehu v komentářích jsem poněkud změnil způsob boje proti bookmarkletům luštících sudoku stisknutím tlačítka.
- Automatický výběr města podle skutečné polohy (14. 08. 2010)
Jak do formuláře přidat tlačítko "Zjisti město podle polohy".
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/…ple7/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.
Mikroblog
Reklama
Nejčtenější
Reklama
Kvalitní domény, levný webhosting
Vyzkoušejte spolehlivý Český hosting.
www.cesky-hosting.cz
Facebook tipy
Moje weby
- Televizní program
- WellDoneSites.com
- One Sudoku
- PrvníPDA
- Great Britain in photos
- Screenshoty Windows Vista RC1
- Teorie grafů
sunW39 - úterý 5. září 2006, 13:14 - #
dost strasny reseni.ale lepsi me nenapada