Autor | Zpráva | ||
---|---|---|---|
Jean Profil |
#1 · Zasláno: 8. 8. 2005, 00:18:52
Rozhodl jsem se že konečně zahodím register_globals, ale ted sem narazil zrejme na trivialni problem, ale chci se zeptat na jeho možná řešení.
Když pošlu z formuláře POSTem nějakou hodnotu proměnný, a pak chci tuhle proměnnou zpracovat v MYSQL příkazu, tak mi to vyhodí hlášku o chybějící proměnný, PHP to nepozá jako celek, ale jako rozdělěný. Příklad: : $data = mysql_query("SELECT * FROM tabulka WHERE nick LIKE \"$_POST['user']\"") or die ("Nepovedlo se provést databázový dotaz1."); jak to řešíte vy? to je potřeba převést to na nějakou jinou proměnnou? Díky Jean |
||
WertriK Profil * |
#2 · Zasláno: 8. 8. 2005, 01:32:59
ja bych to zkusil obejit takto :
$user = $_POST['user']; $data = mysql_query("SELECT * FROM tabulka WHERE nick LIKE '$user'") or die ("Nepovedlo se provést databázový dotaz1."); |
||
Hugo Profil |
#3 · Zasláno: 8. 8. 2005, 05:18:40
Jean
Jde to uplne jednoduse $data = mysql_query("SELECT * FROM tabulka WHERE nick LIKE '".$_POST['user']."'") Musis pouzit operator na spojovani retezcu, coz je '.'. Prip. novou promennou, viz Wertrik. |
||
krteczek Profil |
#4 · Zasláno: 8. 8. 2005, 05:20:58
dělá se to takhle:
$data = mysql_query("SELECT * FROM tabulka WHERE nick LIKE '{$_POST['user']}' ") or die ("Nepovedlo se provést databázový dotaz1."); ALE!!!! POKUD TO CHCEŠ POUŽÍT MUSÍŠ SI NEJPRVE SKONTROLOVAT ŽE V TOM POSTU NENÍ NIC NEBEZPEČNÉHO například:
krteczek |
||
Hugo Profil |
#5 · Zasláno: 8. 8. 2005, 06:42:56
krteczek
Jojo, to je samozrejme 100% pravda. Jen me to po ranu netrklo. Zvlast u db je na to potreba davat bacha. |
||
tark Profil |
#6 · Zasláno: 8. 8. 2005, 10:43:39
mmj. nejlepší jsou funkce typu postVar() apod. víc na http://continuer.nfo.sk/magic_quotes-aneb-jak-na-ne/
|
||
Jean Profil |
#7 · Zasláno: 8. 8. 2005, 10:45:46
jo diky za navrhy, co se tyce toho testovani na obsah, tady zadny velky nebezpeci nehrozi, skript kterej to odesila si sam pohlida pri odeslani, aby tam byly spravny hodnoty a mam pocit ze pak uz nikdo nema sanci nainjectovat $_POST["foo"] promennou, nebo se pletu?
|
||
Hugo Profil |
#8 · Zasláno: 8. 8. 2005, 10:57:29
Jean
If myslis hlidani pomoci javascriptu, tak to rozhodne neni bezpecne. |
||
Jean Profil |
#9 · Zasláno: 8. 8. 2005, 11:00:40
Ne myslim ohlidani pomoci PHP+JavaScript, proste neco podobneho co navrhuje krteczek, ale uz na urovni odeslani... ale spis me zajima ta druha otazka, ma utocnik nejakou sanci a nasimulovat $_POST pole?
|
||
Hugo Profil |
#10 · Zasláno: 8. 8. 2005, 11:30:20
To nejak nechapu. Pokud hlidas promennou $_POST['user'], tak ji pomoci php testujes az na serveru, takze nevim co myslis tou simulaci $_POST.
|
||
Jean Profil |
#11 · Zasláno: 8. 8. 2005, 12:19:05
jo, testuje se az na serveru, jenom v jinej casovej okamzik, otazka je prosta, da se nainjectovat promenna ve formatu $_POST["neco"]??
|
||
Leo Profil |
#12 · Zasláno: 8. 8. 2005, 12:36:59 · Upravil/a: Leo
"otazka je prosta, da se nainjectovat promenna ve formatu $_POST["neco"]?"
Urcite, stejne snadno jako promenna $_GET["neco"], slysel jste neco o formulari? Leo |
||
Hugo Profil |
#13 · Zasláno: 8. 8. 2005, 12:50:51
Jean
Nejlepsi je vzdy otestovat vsechny vstupni udaje. Protoze lidi jsou svine :-) |
||
Jean Profil |
#14 · Zasláno: 8. 8. 2005, 13:59:04
2Leo: no asi sme se spatne pochopili, nicmene nevadi, uz sem to zda se vyresil...
2Hugo: JO, mas recht, lidi SOU svine:) diky vsem za nazory... Jean |
||
llook Profil |
#15 · Zasláno: 8. 8. 2005, 23:20:00 · Upravil/a: llook
$_POST["neco"] se myslím nedá nastavit jinak než posláním metodou POST. Třeba index.php?_POST[neco]=neco proměnnou $_POST['něco'] nevytvoří, ani při zapnutých register_globals, jestli otázka byla myšlena takto.
|
||
krteczek Profil |
#16 · Zasláno: 9. 8. 2005, 00:01:36
je to myšleno tak že nemusí být tím klientem prohlížeč, ale třeba nějaký skript a odeslat get jako post a opačně není problém, protlačit do skrytých a needitovatelných polí své proměnné také ne. a že se mi to nepodaří z tvé stránky? mužu udelat stejný formulář jinde s tím že všechny hodnoty budu moct zadat podle libosti a tvá kontrola javaskriptem ti bude k ničemu ( jde ho taky vypnout ). Prostě pokud někdo bude mít chut se tvým skriptum kouknout na zoubek ( důvody není důležitý důležitá je chuť ), tak to udělá, a je jen na tobě jestli jsi pamatoval na takovou možnost, a bránil se dopředu. ono mít smazanou/změněnou db kvuli pitomě ošetřenému vstupu nasere... a někdy to i bolí ...To když člověk bije hlavou o zed .-)
kkrteczek |
||
Jean Profil |
#17 · Zasláno: 9. 8. 2005, 01:03:02
zda se ze Ilook je jedinej kdo mi dal smysluplnou odpoved, na to na co jsem se tady uz 3x ptal:)
2krteczek: vsecko hezky, ale porad se bavime o moznosti injections promennych. jinak nemysli si, ze sem takovej blazen abych to nechal jen na JavaScriptu...:) Jean |
||
Hugo Profil |
#18 · Zasláno: 9. 8. 2005, 05:20:06
Jean
Nejak nechapu proc se na to ptas, prece neni problem udelat formular, ktery bude mirit na http://tvuj.server.neco/index.php a metodou POST ti tam ty data narve (jak psal Leo). |
||
Časová prodleva: 27 dní
|
|||
error414 Profil * |
#19 · Zasláno: 5. 9. 2005, 15:17:00
je to myšleno tak že nemusí být tím klientem prohlížeč, ale třeba nějaký skript a odeslat get jako post a opačně není problém, protlačit do skrytých a needitovatelných polí své proměnné také ne. a že se mi to nepodaří z tvé stránky? mužu udelat stejný formulář jinde s tím že všechny hodnoty budu moct zadat podle libosti a tvá kontrola javaskriptem ti bude k ničemu ( jde ho taky vypnout ). Prostě pokud někdo bude mít chut se tvým skriptum kouknout na zoubek ( důvody není důležitý důležitá je chuť ), tak to udělá, a je jen na tobě jestli jsi pamatoval na takovou možnost, a bránil se dopředu. ono mít smazanou/změněnou db kvuli pitomě ošetřenému vstupu nasere... a někdy to i bolí ...To když člověk bije hlavou o zed .-)
kkrteczek tak to musim oponovat, je problem odeslat pozadavakek na server tak aby byla naplnena promena $_POST["neco"], ja to musel vyresit funkci fsocketopen, nebo nejak tak. Byl to skaredy kod. |
||
Anonymní Profil * |
#20 · Zasláno: 5. 9. 2005, 22:09:05
Nejak nechapu proc se na to ptas, prece neni problem udelat formular, ktery bude mirit na http://tvuj.server.neco/index.php a metodou POST ti tam ty data narve (jak psal Leo).
Ak kontroluje referer, tak mozes ist vies kam s formularmy... ;)) |
||
Leo Profil |
#21 · Zasláno: 5. 9. 2005, 22:41:30
"Ak kontroluje referer, tak mozes ist vies kam s formularmy... ;))"
Vazne si myslite, ze referer nejde podvrhnout? Netvrdim, ze ve statickem HTML, ale v PHP vam to napisu za chvilku. Leo |
||
Anonymní Profil * |
#22 · Zasláno: 5. 9. 2005, 23:31:33
Leo
Treba vediet sa ochranit... Referer je len jedna z moznosti... Najlespie je, nikoho neinformovat o tvojom zdrojaku :)) ani o ziadnej jeho casti. |
||
krteczek Profil |
#23 · Zasláno: 6. 9. 2005, 05:17:02
Anonymní: no a jsme zase u toho. není bezpečne to, co je neznámé, jen je to trošku obtížnější se tomu dostat na zoubek.
v každém případě je třeba pamatovat i na tu nejméně pravděpodobnou variantu a skripty chránit. krteczek |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0