Vpršanje

Pozdravljeni,

na internetu sem našel nekaj primerov, kako narediti, da bo funkcija get oziroma post bolj varna. Našel sem nekaj takega pa me zanima kaj mislite o tem ali se splača dodati pri vsakem get oziroma post naslednjo kodo. Ali je mogoče kakša boljša rešitev?

Koda:
$trenutnastran = $GET['stran'];
$trenutnastran = mbconvertencoding($trenutnastran, 'UTF-8', 'UTF-8');
$trenutnastran = htmlentities($trenutnastran, ENT_QUOTES, 'UTF-8');

5 odgovorov

Jap. Uporabiš kak templating engine, ki ti bo avtomatsko preprečeval XSS napade.

Smarty se je včasih uporabljal.

1

Twig je men osebno najboljši. Smarty zna bit velik pain in the ass.

2

Hvala za odgovora. Imel bi še eno vprašanje ker vidim, da je zelo veliko različnih načinov izdalave... Zanima pa me sledeče ali je pravilno, da se htmlentities uporablja samo pri prikazih na straneh, katere vrednosti pridejo iz MYSQL baze. SQL injection pa se uporablja samo tam kjer podatke dobimo iz $GET oziroma $POST ( predens se zapišejo v bazo ) ali je potrebno sql injection uporabljati ko hočem isto zadevo vpisati v drugo tabelo?

Kadarkoli sprejemaš nek input od userja moraš predvidevat da je lahko to karkoli. Pred mysql injectioni se najlažje zavaruješ s prepared statmenti z uporabo PDO ali mysqli. Če pa se bo input od userja prikazal kje na tvoji strani pa moraš bit pozoren tudi na xss napade, torej moraš odstranit vsaj vse html tage ki niso varni, npr. "<script>". Php funkcija strip_tags ti lahko pri tem pomaga.

1

Hvala iztoks. Kako pa bi lahko zaščitil povezavo ( http://www.domena.com/prenos.php?datoteka=ime.zip ), da se nebi aktivirala če bi šlo za xss napad. Toraj, da bi se aktivirala samo takrat ko klikne človek?