Avatar
Neaktivní uživatel:

Dobrý den, chcel by som sa spytat ci existuje moznost automaticke osetrovanie vstupov aby som sa tak vyhol moznosti sql injection. Diky za kazdu radu.

Odpovědět 4.4.2015 9:47
Neaktivní uživatelský účet
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Fredep:

Ahoj, jasně, že existuje. Používá se na to PDO. Zde máš ukázku, jak se zadává dotaz.

$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));

Nejprve si připravíš dotaz, kde na místo vkládaných dat vložíš otazníky. Poté v dalším dotaze místo nich dosadíš skutečné hodnoty, které se ošetří...

PDO je nejrozšířenější ovladač, tak se ho určitě nauč používat ;)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +2 4.4.2015 10:33
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Odpovídá na Fredep
Neaktivní uživatel:

ked tomu spravne rozumiem teda ta funkcia execute osetri sama vstup automaticky? teda by som tam mohol dat kludne napriklad $_GET["id"] a co tak by hodnota ktoru tam vlozim neexistovala teda bolo by prv nutne zistit ci hodnota je zadana pomocou isset alebo aj nato ma paky PDO?

Nahoru Odpovědět 4.4.2015 11:24
Neaktivní uživatelský účet
Avatar
Fredep
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Fredep:

Ne, to neumí. Nejprve si musíš ověřit, zda proměnná existuje, jinak ti to vyhodí notice. Naštěstí by nemělo dojít k žádné bezpečnostní chybě, protože by se místo té tvé neexistující proměnné dosadilo null a vrátil by se nulový počet řádků z databáze (protože by neexistoval žádný řádek s ID = NULL).

Nahoru Odpovědět 4.4.2015 12:17
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Odpovídá na Neaktivní uživatel
Michal Šmahel (ceskyDJ):

Jak psal Fredep. Existenci dat či jejich správnost si musíš ověřit sám pomocí podmínek. PDO ti jen zajistí bezpečnost, zabrání SQL injection a podobným.

Nahoru Odpovědět 4.4.2015 12:23
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Neaktivní uživatel:

Ale tu logicky mi vznikne problem napriklad mam pocet parameterov co pride zo stranky klienta 3 id1 , id2, id3 tak logicky nemozoem vytvorit dotaz to prepare z tromi otazniknmi lebo neviem ci tam budu realne aj tri parametre, ako by sa riesilo nieco take? if(isset($id1)) prepare 1 otaznik?
if(isset($id1) && isset($id2))prepare 2 otazniky? to mi pride trocha zvlastne? co by sa udialo ak by som tam mal tri otazniky v tom prepare ale hodnoty by som tam dal iba existujuce, nehadzalo by to chybu ze pocet ocakavanych parametrov ma byt 3?

Nahoru Odpovědět 4.4.2015 12:29
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.