Hrozně nerad bych řekl něco hloupého, ale pokud je podle autora tak jednoduché vstupy proti injekcím a cross-site scriptingu ošetřit, čím to, že už dávno neexistuje nějaká všeobecně známá JEDNA super-univerzální funkce, kterou by všichni používali? Tak nějak laicky se mi zdá, že kdyby skutečně existovalo nějaké naprosto neprůstřelné řešení, už dávno by všichni měli na svých webech definovanou příslušnou funkci
function OsetriVstup()
která by prostě sama od sebe vzala $_POST, $_GET, $_REQUEST atd. a nějak to "pořešila".
V diskuzi také několikrát zaznělo, že je třeba provádět ošetření jak na vstupu, tak na výstupu (z databáze), pro případ, že někdo DB nabořil. Jenže se obávám, že by pak sotva šlo udělat redakční systém, který by adminům umožnil například do nějakých zpráviček/aktualit vložit odkazy nebo IFRAME.
Domnívám se, že přístup "Nikdy nikomu nevěř" nelze používat; ti, komu nelze věřit, jsou návštěvníci webu z řad běžných surfařů, ale někomu člověk věřit musí. Jinak by každá firma musela mít na každého programátora dva další kontrolory, kteří by kontrolovali, jaký kód programátor na web nahrává, každý admin databáze by musel mít nad sebou dva kontrolory, kteří by kontrolovali jeho zásahy... A nad těmi kontrolory by museli být další kontroloři, kteří by hlídali, zda náhodou někdo ty dva "dolní kontrolory" nepodplatil, aby tam nepropašovali něco škodlivého. Tohle už je paranoia.
No muzete mit zajistene, co chcete, ale podavat trestni oznameni v pripade, ze utok prisel z nejake zajimave africke ci asijske zeme asi nema moc smysl. Predpokladam, ze kdokoliv soudny, kdyz by Vam chcel skodit, pujde urcite pres statni hranice, nejlip jeste vice skoky pres exoticke zeme.
Data budou fuc, web zemneny, firma ma z ostudy kabat a utocnik je prakticky nedohledatelny. Myslite, ze T.O. ma pak cenu?
Pokud staci prosty text bez HTML, takove funkce jsou standardne snad ve vsech HTML-generujicich jazycich (a pokdu ne, neni problem je napsat, treba regularnimy vyrazy). Problem nastane v okamziku, kdy "hodne" HTML musi zustat nedotceno, zatimco "zle" HTML s moznym XSS musi byt zruseno, pozrano, prevedono na entity ci jinak osetreno. To uz problem je, obzvlast kdyz musi vstup zpracovat i takove hruzy jako HTML generovane z MS Office.
BTW: Onu funkce na osetreni vstupu v prvnim pripade neni problem udelat, napr. v onom PHP staci tohle (pisu to z pameti, tak doufam, ze je to dobre):
foreach($_REQUEST as $name => $value)
{
$_REQUEST[$name]=htmlspecialchars(strip_tags(stripslashes($value)));
}
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).