Dobrý den,
zavítal jsem na Vaše stránky Českého slavíka a zkusil jsem bezpečnost stránek proti webovým útokům (zde posloužilo okno pro hlasování).
Zadal jsem:
<script>alert("1");</script> Výsledkem nebylo (dle mého očekávání) "Zadal jste neplatný vstup", ale okno viz: 
Zde by pomohlo něco ve stylu htmlentities($src,ENT_QUOTES); a následná kontrola správnosti vstupu.
Ten útočí na databázi.
Prve jsem napsal:
* OR 1=1; -- Výsledkem byla: 
Poté jsem si však všiml, že je to napsáno špatně a opravil na:
' OR 1=1; -- Výsledkem byl pravděpodobně pád kódu na Vaší straně, jelikož se nevypsalo nic:
Pro:
" OR 1=1; -- Se však text opět vypsal, což svědčí o úspěšném počátku blind SQL injection. Pomocí programu k tomu určenému by se tudíž dala analyzovat celá databáze.
Zde bych doporučil použití prepared statements (+ následná kontrola správnosti vstupu), aby se deaktivovala možnost použití tohoto útoku.
Další věc, co bych vytkl je absence SSL. Tím, že komunikace mezi uživatelem a serverem není šifrovaná, může potenciální útočník třetích stran modifikovat text, který jde na Vaše servery a tím úplně otočit výsledky hlasování bez toho, abyste měli šanci zjistit, že se něco stalo.
Poslední věcí, kterou bych (prozatím) vytkl je způsob, jakým bylo ukončeno hlasování. Odstranění odkazu na hlasování z úvodní stránky rozhodně není dostatečný způsob, jak zamezit hlasování po ukončení ankety.
Zde je nutno plně deaktivovat odkaz na hlasování. Zejména, když je tak lehce zapamatovatelný, jako http://www.ceskyslavikmattoni.cz/hlasovani/
Doufám, že se tato zpráva dostane ke kompetentním lidem a bude k užitku.
S pozdravem a přáním hezkého dne
Jindřich Kvita
