Re: Volt Session probléma (PHP) -- hosszú php/html kérdés
Kubanka Peter
kubanka.peter at gmail.com
2009. Ápr. 16., Cs, 12:05:18 CEST
1. kevered a POST-ot és a GET-et, amikor
www.valami.hu/index.php?valtozo=ertek -et használsz, az a GET.
2. A POST használatát nem kell kerülni, formoknál azt kell használni,
cross-site scripting nem fog vele tudni mit kezdeni, persze adatok
ellenörzése ott is kell
jól mondtad, a felhasználótól jövő adatokban sohasem szabad
megbízni, de azon az oldalon leírják, hogy hogyan lehet a kockázatot
csökkenteni.
A menüdre a megoldás:
persze, másképp nem lehet átadni egy szkriptnek linken keresztül, hogy
melyik oldalt nyissa meg, itt nyugodtan a GET-et használd.
A php scriptben pedig egyszerü lekezelni, biztonsági rés hagyása
nélkül, mivel tudod hogy mik az elvárt adatok.
pl:
<ul>
<li><a href=".../index.php?menu=1">Első pont</a></li>
<li><a href=".../index.php?menu=2">Másik pont</a></li>
</ul>
scriptben:
switch($_GET['menu'])
{
case '1':
kód ide
break;
case '2':
kód ide
break;
default:
echo "ismeretlen oldal";
}
Ha pedig zavar az index.php?menu=1 formátum, megoldható az, hogy csak
így keljen beírni a címet: www.valami.hu/1 vagy www.valami.hu/2
csak ehez a szolgáltatónál telepítve kell lennie a mod_rewrite apache
modulnak, jobb helyeken fent van, mert sokan használják :)
ha az alábbi kódot beleteszed a .htacces file-ba, akkor a $_GET['q']
változóban benne lesz mindaz amit a / után írnak. Ha létező oldalt
hívnak meg, akkor
az töltődik be, ha nem létezőt, akkor az index.php-nak átadódik
index.php?q=érték formában. Fenti példát alapul véve innentől
<ul>
<li><a href="www.valami.hu/1">Első pont</a></li>
<li><a href="www.valami.hu/2">Másik pont</a></li>
</ul>
scriptben:
switch($_GET['q'])
{
case '1':
kód ide
break;
case '2':
kód ide
break;
default:
echo "ismeretlen oldal";
}
.htacces file-ba ez kerüljön bele
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>
> OK, így már értem. Megnéztem azt az oldalt, szerintem inkább az a fő
> mondanivalója, hogy a kliensoldalról érkező adatokat mindig eleve
> nagyon gyanúsnak kell tekinteni és alapos ellenőrzésnek alávetni,
> függetlenül attól, hogy hogyan érkeztek.
>
> És persze úgy a post, mint a get használatát kerülni kell :) viszont
> nehéz máshogy információt szerezni a böngésző előtt ülő hapsitól. :)
>
> Más. Nem teljesen a lista témájához tartozik, de nem vagyok egy html/php
> listán se. :)
>
> Régi problémám, hogy sokan/én is csinálok úgy menüket, hogy akár egy
> vízszintes, akár egy függőleges számozatlan lista elemeibe linkeket
> tesznek, valahogy így:
>
> <ul>
> <li><a href=".../index.php?menu=1">Első pont</a></li>
> <li><a href=".../index.php?menu=2">Másik pont</a></li>
> ...
> </ul>
>
> Utána ezt CSS-sel lehet gyönyörűen formázni, elhelyezni, nyomógombhoz
> hasonlóvá tenni stb. Viszont itt a hivatkozásba csak úgy lehet a paramétert
> beírni, hogy azt post-tal küldje a scriptnek.
>
> Ez egyrészt nem túl biztonságos (bár természetesen ellenőrzöm a paraméter
> értékét, mert tudom, hogy valaki beírhatja a böngészőjébe, hogy
> http://.../index.php?menu=cikilennehaeztiselfogadná, anélkül, hogy az
> én nem létező ,,ciki'' gombomra :) klikkelne), másrészt (ami jobban zavar)
> a böngésző címsorában illetve a státuszsorban alul megjelenik ez a rusnya
> menu=1 szöveg.
>
> Hogy lehet ezt ésszerűen megoldani? Ugye nincs erre (egyszerű) módszer?
> (Ha formokat rakok a menübe egy-egy gomb-bal meg esetleg rejtett
> paraméterekkel, az nem szép: a gombok kinézetét nem lehet ugyanolyan
> szabadon konfigurálni, mint a hivatkozásokat/listaelemeket CSS-sel.)
>
--
----------------------------------------------
Kubánka Péter
kubanka.peter(kukac)gmail.com
További információk a(z) Techinfo levelezőlistáról