PHP vprašanje - varnost?

Izdelujem eno stran (nadzorno ploščo za uporabnike - "HTML KODA") in me zanima, kako je z varnostjo v spodnjem primeru.

Če je uporabnik prijavljen, mu prikaže nadzorno ploščo, če ni, ga preusmeri na prvo stran...

-------------------------------------------- koda 1 ------------------------------------
...
<?php
if (!isset($_SESSION['uporabnik'])) {
    $url = BASE_URL;
    ob_end_clean();
    header("Location: $url");
    exit();
}
?>

HTML KODA

----------------------------konec  kode 1 -------------------------------------

ali takole...

------------------------------------------ koda 2 ------------------------------------------
...
<?php
if (!isset($_SESSION['uporabnik'])) {
    $url = BASE_URL;
    ob_end_clean();
    header("Location: $url");
    exit();
} else {
echo HTML KODA;
}
?>
------------------------------------------ konec kode 2 ----------------------------

Zanima me seveda prvi primer, za drugega vem, da je ok. Bi znale biti kakšne težave v prvem primeru kar se varnosti tiče? Zakaj bi raje uporabil prvi primer je jasno :) Imam kar nekaj HTML kode in se mi jo ne da vse pisati z echo-ti...

9 odgovorov

Prvi primer je čist OK. Nihče ne bo videl tistega HTMLja spodaj, če ne bo tisti pogoj izpolnjen. echo HTML KODA je pa bad bad bad, tega se izogibaj ;)

4

Tvoja dva primera sta pomojem enako varna :)

Isto je. Drugače pa... ni problem v tem da ti ne bi bilo potrebno delat te html kode z echoti... lahko tudi zaključiš php...

else { ?> <body><h1>lalala</h1></body> <? } ?>

b00mbar:
Prvi primer je čist OK. Nihče ne bo videl tistega HTMLja spodaj, če ne bo tisti pogoj izpolnjen. echo HTML KODA je pa bad bad bad, tega se izogibaj ;)

Kako to? =))

Echo-anje html kode ni nič nevarno samo po sebi...

Hvala vsem za mnenja in komentarje. Bom potem uporabil kar prvi primer ;)

Kaj vam ni jasno z minusi. Kdo je rekel, da echo HTML ni varno? Rekel sem da je BAD. in bad je. zelo. ok?

1

Lahko tudi razložiš zakaj? Prosim, ker meni ni ravno jasno.

Ker bi moral imeti nek templating sistem, ne pa da ima html in kodo (logiko) skupaj natlačeno. Take kode se ne da vzdrževat, ni skalabilna ni modularna.
SOC