IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Bezpečnosť

Aktivity
Avatar
Neaktivní uživatel:4.4.2015 9:47

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
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:4.4.2015 10:33

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
4.4.2015 10:33
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:4.4.2015 11:24

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
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:4.4.2015 12:17

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Šmahel:4.4.2015 12:23

Jak psal Neaktivní uživatel. 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:4.4.2015 12:29

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.