Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Potřebuju poradit s PHP kódem

Keďže očakávaš, že ti klient pošle v cookie číslo, tak je dobré to ošetriť tak, aby tam číslo naozaj bolo. Najjednoduchšie je upraviť podmienku pred zavolaním SQL príkazu:

if(empty($_COOKIE["vzhled"])) {
  $_COOKIE["vzhled"]="c.hodnota";
} else {
  $_COOKIE["vzhled"]=(int)$_COOKIE["vzhled"];
}
Alebo sa to dá zapísať aj kratšie:
$_COOKIE["vzhled"] = empty($_COOKIE["vzhled"]) ? "c.hodnota" : (int)$_COOKIE["vzhled"];
Lepšie by bolo ukladať si výsledok inde než do $_COOKIE["vzhled"], aby si vedel, v ktorej premennej máš hodnotu od používateľa a kde už máš ošetrenú hodnotu.

Bez ošetrenia SQL injection sa môže stať všeličo (prepísanie dát v tabuľkách, vymazanie tabuliek a pod.). V tomto konkrétnom prípade mi nenapadol nijaký tragický útok, ktorého dôsledkom by bola strata dát. To platí za predpokladu, ak nie je povolené používať viacero SQL príkazov oddelených bodkočiarkou - záleží od typu databázy, napr. mysql_query to nepodporuje. V každom prípade by sa však asi dal vyradiť SQL server nejakým DoS útokom.

Lepšie, než rozmýšľať, čo všetko by sa mohlo pokaziť, je napísať to poriadne - je to menej namáhavé.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny