Zadejte hledaný výraz...

Jak zamezit vkládání javascriptů do databáze?

Honzaa
verified
rating uzivatele
24. 2. 2008 20:17:57
Zřejmě už jste to také někteří řešili, když si z Vás chtěl někdo vystřelit, nebo poškodit Vaše webové stránky. Slouží k tomu všechny neošetřené vstupy, z kterých data putují do databáze. místo aby se např. vyhledávací vstup používal k vyhledávání, slouží to k hacku více či méně úspěšnému. Jedná se o vkládání celých javascriptů do nějakého vstupního pole formuláře a k následnému zapsání do databáze. Až potud je to zcela neškodné, dokud se tyto data nezobrazí na stránce. V lepším případě to něco vypíše na obrazovku, v horším to může napáchat nedozírné škody.
Sám jsem si napsal jednoduchou funkci, která zamezí vložení jakéhokoliv scriptu do databáze. Máte něco lepšího ?
function nohack($vstup) {
if (eregi('<',$vstup)) {
$vystup="";
} else {
$vystup=$vstup;
}
return $vystup;
}
?>
24. 2. 2008 20:17:57
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46343
Arthur
verified
rating uzivatele
(2 hodnocení)
24. 2. 2008 20:30:16
Ano. Používám třeba htmlspecialchars().
24. 2. 2008 20:30:16
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46342
Honzaa
verified
rating uzivatele
24. 2. 2008 20:34:16
Napsal Arthur;36478
Ano. Používám třeba htmlspecialchars().
To ale nezamezí vložení toho Javascriptu. Jenom ho zneškodní.
24. 2. 2008 20:34:16
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46341
miniJOHN
verified
rating uzivatele
(57 hodnocení)
24. 2. 2008 20:36:56
Napsal Honzaa;36475
V lepším případě to něco vypíše na obrazovku, v horším to může napáchat nedozírné škody.
Maximálně to změní třeba barvu pozadí, nebo to přesměruje stránku někam jinam, jinak skoro nic :)
Napsal Honzaa;36481
To ale nezamezí vložení toho Javascriptu. Jenom ho zneškodní.
Pokud potřebuješ, aby se ten script vůbec nezobrazil, tak je podle mě ta tvoje funkce pro to ideální...je jednoduchá a cool
24. 2. 2008 20:36:56
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46340
Honzaa
verified
rating uzivatele
24. 2. 2008 20:39:25
Napsal miniJOHN;36483
Pokud potřebuješ, aby se ten script vůbec nezobrazil, tak je podle mě ta tvoje funkce pro to ideální...je jednoduchá a cool
Přesně tak, nemám zájem o takové smetí v databázi.
24. 2. 2008 20:39:25
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46339
Arthur
verified
rating uzivatele
(2 hodnocení)
24. 2. 2008 20:52:32
Jenže tím zabráníš uživateli vložit cokoli, kde se vyskytne znak "<". Pokud to nevadí, tak pak OK, pak klidně i takhle:
if (strpos($text,'<')!==false)$text='';
24. 2. 2008 20:52:32
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46338
hrach
verified
rating uzivatele
24. 2. 2008 21:02:17
mrkni na diskuzi pod funkci strip_tags na php.net
jinak neni vubec pravda, ze to "maximalne zmeni barvu", je to velmi závažný bezpečnostní problém.
24. 2. 2008 21:02:17
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46337
Honzaa
verified
rating uzivatele
24. 2. 2008 21:15:16
Napsal Arthur;36486
Jenže tím zabráníš uživateli vložit cokoli, kde se vyskytne znak "<". Pokud to nevadí, tak pak OK, pak klidně i takhle:
if (strpos($text,'<')!==false)$text='';
Jasně, případů je více. Ve většině zápisů to však stačí. Např. při zápisu odkazu do katalagu stačí ta funkce htmlspecialchars(), protože se ty odkazy stejně musí čistit, ale takové vyhledávání v databázi, tam ten znak nemá co dělat. Navíc si to ten, kdo to tam vkládá i sám zobrazí a teda i spustí inkriminovaný soubor.
24. 2. 2008 21:15:16
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46336
Arthur
verified
rating uzivatele
(2 hodnocení)
24. 2. 2008 21:16:37
Souhlas s Hrachem, bezpečnostní problém to je. strip_tags něco vyřeší, ale těch možností je tolik... Doporučuju projít i tenhle seznam: http://ha.ckers.org/xss.html
24. 2. 2008 21:16:37
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46335
miniJOHN
verified
rating uzivatele
(57 hodnocení)
24. 2. 2008 21:18:57
Napsal hrach;36488
mrkni na diskuzi pod funkci strip_tags na php.net
jinak neni vubec pravda, ze to "maximalne zmeni barvu", je to velmi závažný bezpečnostní problém.
Jj, sorry...teď jsem si to uvědomil...XSS...:)
24. 2. 2008 21:18:57
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46334
Fuck You
verified
rating uzivatele
(1 hodnocení)
24. 2. 2008 21:24:50
Ano, javascript může mimojiné měnit cookies nebo posílat Ajax požadavky zpět na server, může posílat informace ven...
Já teda nejraději různé injekce (SQL injection, XSS apod.) řeším až na místě. Proto používám htmlspecialchars až při vypisování HTML, proto escapuju SQL až při sestavování dotazu (žádné magic_quotes_gpc) atd. Lidi ti tam můžou poslat různé jiné "smetí" (například bla bla bla bla bla bla bla asdfasdfasdf), to ti nevadí?
24. 2. 2008 21:24:50
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46333
Honzaa
verified
rating uzivatele
24. 2. 2008 21:28:21
Napsal llook;36495
Ano, javascript může mimojiné měnit cookies nebo posílat Ajax požadavky zpět na server, může posílat informace ven...
Já teda nejraději různé injekce (SQL injection, XSS apod.) řeším až na místě. Proto používám htmlspecialchars až při vypisování HTML, proto escapuju SQL až při sestavování dotazu (žádné magic_quotes_gpc) atd. Lidi ti tam můžou poslat různé jiné "smetí" (například bla bla bla bla bla bla bla asdfasdfasdf), to ti nevadí?
Prevence je vždy nejlepší u zdroje. Může se to třeba před uložením tisknout atd.
24. 2. 2008 21:28:21
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46332
Jan Pacek
verified
rating uzivatele
(4 hodnocení)
24. 2. 2008 23:38:37
Htmlspecialchars() zásadně na výstupu. Funkce pro kontrolu znaku "<" je hloupost. "<" je běžně používaný znak: menšítko, jiné html značky, smajlíci, ... Javascript v databázi ničím nevadí, pokud ho nechceš ani vypisovat při pokusu o útok tak stačí kontrolovat podezřelé konstrukce jako "
24. 2. 2008 23:38:37
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46331
Michal Řehák
verified
rating uzivatele
(4 hodnocení)
24. 2. 2008 23:52:53
Při vstupu do db určitě taky stojí za zmínku fce mysqli_real_escape_string. Možností je spoustu z obou stran, pokud se dodržujou určitá aspoň základní pravidla zabezpečení, neni se moc čeho bát.
24. 2. 2008 23:52:53
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46330
Honzaa
verified
rating uzivatele
25. 2. 2008 00:04:23
Napsal Pacek;36532
Htmlspecialchars() zásadně na výstupu. Funkce pro kontrolu znaku "<" je hloupost. "<" je běžně používaný znak: menšítko, jiné html značky, smajlíci, ... Javascript v databázi ničím nevadí, pokud ho nechceš ani vypisovat při pokusu o útok tak stačí kontrolovat podezřelé konstrukce jako "
To snad ne ! Píšeš smajlíky do vyhledávacího formuláře třeba na Google ? Co by to mělo najít ? A pokud jde o podezřelé konstrukce, kolik bych jich tam musel uvést ? Co třeba "
25. 2. 2008 00:04:23
https://webtrh.cz/diskuse/jak-zamezit-vkladani-javascriptu-do-databaze/#reply46329
Pro odpověď se přihlašte.
Přihlásit