Forum » Programiranje » [php] spremenljivke v mysql poizvedbi
[php] spremenljivke v mysql poizvedbi
deleted ::
Torej zanima me, kako bi lahko v mysql poizvedbi dostopal do neke prej definirane spremenljivke. En primer na hitro spackan:
(Mozno, da kaj ni logicno, vazno je, da veste za kaj se gre.)
$spremenljivka = neznanec;
$seznam = mysql_query('SELECT * FROM stacuna WHERE gost = $spremenljivka;');
while($vrstica = mysql_fetch_array($seznam))
{
echo "Burek: " . $vrstica['burek'];
echo "
";
echo "Kebab: " . $vrstica['kebab'];
echo "
";
echo "Pasta: " . $vrstica['pasta'];
echo "
";
echo "Riz: " . $vrstica['riz'];
echo "
";
}
(Mozno, da kaj ni logicno, vazno je, da veste za kaj se gre.)
- spremenil: deleted ()
netanyahu ::
1. Uporabiti moraš "niz" namesto 'niz', če želiš, da PHP vstavi spremenljivke. Primer:
$x=5; echo "Vrednost: $x"; /* dela */ echo 'Vrednost: $x'; /* ne dela*/
http://php.net/manual/en/language.types...
2. Nikoli, ampak res nikoli ne delaj poizvedb na način, kot si napisal. Google: sql injection, prvih sedem rezultatov. Vse parametre ali dosledno escapeaj ali bolje, uporabi prepared statements.
$x=5; echo "Vrednost: $x"; /* dela */ echo 'Vrednost: $x'; /* ne dela*/
http://php.net/manual/en/language.types...
2. Nikoli, ampak res nikoli ne delaj poizvedb na način, kot si napisal. Google: sql injection, prvih sedem rezultatov. Vse parametre ali dosledno escapeaj ali bolje, uporabi prepared statements.
Ziga Dolhar ::
Kritična opomba k netanyahuju.
1. Izogibaj se ustvarjanju stringov z vnašanjem spremenljivk v dvojne narekovaje.
$burek = "Bla: $bla";
lahko precej 'varneje' zapišeš kot:
$burek = 'Bla: '.$bla;
Konkatenacija naj ima prednost pred prvo metodo. Lahko pripomore k čitljivosti kode z vidika razlikovanja statičnih in dinamičnih sestavin generiranih stringov.
2. SELECT * FROM stacuna WHERE gost = $spremenljivka;'
Če je gost string, ga nujno
a) odeni v narekovaje!, in
b) _RES_ ne pozabi na escapanje. Če pozabiš na to, na kar te je netanyahu opozoril, boš morebiti prišel še v novico na Slotechu ;).
1. Izogibaj se ustvarjanju stringov z vnašanjem spremenljivk v dvojne narekovaje.
$burek = "Bla: $bla";
lahko precej 'varneje' zapišeš kot:
$burek = 'Bla: '.$bla;
Konkatenacija naj ima prednost pred prvo metodo. Lahko pripomore k čitljivosti kode z vidika razlikovanja statičnih in dinamičnih sestavin generiranih stringov.
2. SELECT * FROM stacuna WHERE gost = $spremenljivka;'
Če je gost string, ga nujno
a) odeni v narekovaje!, in
b) _RES_ ne pozabi na escapanje. Če pozabiš na to, na kar te je netanyahu opozoril, boš morebiti prišel še v novico na Slotechu ;).
https://dolhar.si/
deleted ::
Hvala za nasvete, nisem profesonalni programer, programiram pač po logiki in zelo slabo poznam zadeve glede varnosti v skriptah. Sicer pa sem si pred kratkim zadal precej velik projekt, niti ne vem, če ga bom zmogel sam - a mi dokaj uspeva, razen varnostnih lukenj.
Torej, iz vajinih sporočil lahko razberem, da je veliko varneje uporabljati enojne navednice. Če mi lahko na kakeršenkoli način svetujete glede tega, na kaj naj pazim, da se izognem zlorabam, bom izredno vesel. Kot sem že rekel, programiram večinoma po logiki, če se mi dozdeva, da mi nekaj, npr. neka funkcija manjka, pogledam v dokumentacijo in to je to. Všeč mi je, ker je vse tako zelo logično in eksplicitno. Stvar me zelo zanima in čimveč bi se rad naučil, da bi tudi kaj poštenega ustvaril in mi ne bi potem nekdo tega na tako nizkoten način haxnu. :)
Torej, iz vajinih sporočil lahko razberem, da je veliko varneje uporabljati enojne navednice. Če mi lahko na kakeršenkoli način svetujete glede tega, na kaj naj pazim, da se izognem zlorabam, bom izredno vesel. Kot sem že rekel, programiram večinoma po logiki, če se mi dozdeva, da mi nekaj, npr. neka funkcija manjka, pogledam v dokumentacijo in to je to. Všeč mi je, ker je vse tako zelo logično in eksplicitno. Stvar me zelo zanima in čimveč bi se rad naučil, da bi tudi kaj poštenega ustvaril in mi ne bi potem nekdo tega na tako nizkoten način haxnu. :)
Ziga Dolhar ::
Zgolj za začetek - malce star, a še vedno aktualen. [ Slo - Tech : Varnost v PHPju]
https://dolhar.si/
deleted ::
Prebrano. Se priporočam še za kaj takega, mogoče bi bilo dobro, če bi bile stvari bolj konkretne, kaj je moč v določenih primerih zlorabiti, da bi lahko potem predvidel čimboljše rešitve.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4030 (3667) | cobrica |
» | Procentualna tabela s fiksno glavoOddelek: Programiranje | 1860 (1744) | alen1 |
» | [php, mysql] sortiranje izpisa iz bazeOddelek: Izdelava spletišč | 2646 (2165) | Binji |
» | Raziskava o ranljivosti spletnih strani z SQL bazami podatkovOddelek: Novice / Varnost | 4915 (4251) | sverde21 |
» | login v phpju?Oddelek: Programiranje | 1612 (1272) | rc-car |