[ Príspevkov: 21 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...

Dobrý deň vospolok!

Len sa chcem spýtať, či môžu mať všetky polia(rôznych typov) vo formulári name v tvare name="pole['id']"

Viem, že checkboxi sa tak bežne odosielajú, ale čo kombinácia viacerých typov?
Mne to funguje, len chcem vedieť či v tom neni nejaký zakopaný kocúr o ktorom by som nevedel...


EDIT:
Ešte jednu vec sa chcem spýtať. Kľúče toho poľa by sa dali tiež použiť pri SQL injection, že ano??? Ak ich teda dávam do insertu ako kľuče...


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

camo píše:
Len sa chcem spýtať, či môžu mať všetky polia(rôznych typov) vo formulári name v tvare name="pole['id']"


funguje? funguje, sám si sa o tom presvedčil, nerozumiem teda prečo si tu otázku položil.

camo píše:
Kľúče toho poľa by sa dali tiež použiť pri SQL injection, že ano??? Ak ich teda dávam do insertu ako kľuče...

no logicky áno, tiež nerozumiem otázke, veď je to logické. filtruj iba kľúče, ktoré sa vyskytnúť môžu. potom sa nemáš čoho báť


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 23.08.2011 16:33 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Pýtal som sa kôli tomu kocúrovi...

Vďaka za názor.


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 29.08.2011 22:22 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Ja by som sa potreboval ešte raz vrátiť k tejto téme ak dovolíte...

Totiž potrebujem tie kľúče oescapovať, lebo použiť whitelist ako navrhol aj emer nechcem. Je tam veľa polí (desiatky) a príde mi efektívnejšie escapovať to než to porovnávať oproti tomu whitelistu.

Najprv som si myslel, že bude stačiť addslashes, ale ako som zistil tak mysql pri kľúčoch neberie úvodzovky len " ` ".
Tak som to riešil takto cez addclslashes:

Kód:
$key = addcslashes($_POST['key'] , '\`' )

Všade sa píše o nulovom byte ktorý neviem zapísať, tak sa vás pýtam, ako to tam doplniť a či je tento spôsob postačujúci?

Moc vďaka...


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

ake tvary maju tie kluce?


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 29.08.2011 22:48 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Normálne stringy... nerozumiem čo tým myslíš. Tu už nejde o tie polia v 8_POSTe ale len o správne ošetrenie tých kľúčov... Okolo fcie addcslashes sú totiž popísané veci ktorým moc dobre nerozumiem ako napr. c-like style a pod...


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

no ved ake maju tvary tie kluce...

name_0
name_1

alebo hocijake retazce? alebo je 100 variantov a iba tie mozu byt?
alebo ty vopred nevies ake budu ? (co je imho blbost)

ja by som si spravil regularny vyraz, ktoremu by vyhovovali iba dane retazce. a najprv skontrolujes, ci fakt posielaju to co chces..

pripadne, druhy variant, posli si vsetky mozne kluce a zachyt ich. nasledne z toho sprav whitelist (aby si sa nenarobil). nie je to zdlhave a urcite najbezpecnejsie..
lebo je blbost iba osetrovat vstup tym, ze escapnes apostrofy atp... zapises do databazy nieco, co tam vobec nema byt?!


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 29.08.2011 22:58 | $_POST['pole']['item'] kombinácia viacerých typov inputov

To už by bol prijateĺnejší ten whitelist ako regulárny výraz. Asi netreba vysvetľovať prečo. Ja samozrejme viem z DB vytiahnuť názvy stĺcov a urobiť z nich ten whitelist. Len mi to prišlo ako neefektívne oproti addcslashes.

A naozaj si myslíš, že escapovať nestačí? Ako potom ošetruješ vstupy ty?

PS: Ja samozrejme nejdem do DB zapisovať nejaké podozrivé vstupy od nejakého dobrodincu ktorý sa bude snažiť poslať mi nejako modifikovaný formulár. Proste takú požiadavku nechám padnúť, len musím dosiahnuť, aby to bolo bezpečné.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188

tak teraz som uz zmateny z toho co riesite. ak potrebujes osetrovat vstupy pred sql injection, addslashes je samozrejme blbost, miesto toho pouzi mysql_real_escape_string a o tom uz neviem ze by sa dalo nejak prelomit.


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 29.08.2011 23:44 | $_POST['pole']['item'] kombinácia viacerých typov inputov

PHP.net:
Citácia:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.

To vyzerá, že tvoja superfunkcia nerobí vlastne tiež nič iné ako escapovanie. Len ja potrebujem akurát to čo ona nerobí, preto addcslashes. Ale vďaka aspoň som tam našiel zoznam znakov, ktoré treba escapnúť.


A ak mi niekto vie povedať či sa dá Mysql podstrčiť niečo v tom zmysle ako pri Javascript injection, keď sa používa hexadecimálne vyjadrenie znakov a JS to zožerie... Pokiaľ viem tak nie, ale zase až toľko toho neviem, tak sa pýtam...

EDIT:
Takže teraz to vyzerá takto:
Kód:
addcslashes($key,'\x00\n\r\\'"`\x1a')

PS: ale ja tam vlastne nepotrebujem escapovat uvodzovky a tie ostane znaky tiez neviem.... Mozem za to, ze som este nehekol ziadnu stranku a neviem ako sa to presne robi? Je tu niekto, kto mi to vie vysvetlit? Stacil by odkaz na nejaku zivu ukazku... ;)


Offline

Čestný člen
Čestný člen
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno

Ten whitelist je jednoznacne najbezpecnejsie riesenie.


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2011 12:11 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Ešte sa spýtam inak:

Je tu niekto, kto by mi dokázal poslať do DB injekciu, ak by som vstup ošetril týmto(ide o tie kľúče preto tam nie sú úvodzovky):
Kód:
addcslashes($key,'\x00\n\r\`\x1a')


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 14.04.09
Prihlásený: 28.11.17
Príspevky: 1178
Témy: 188 | 188

Neviem, ale ta funkcia funguje zle, skus si napriklad osetrit vstup s pismenom r a vlozit ho do DB.


Offline

Čestný člen
Čestný člen
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno

camo, v prvom rade, neviem, ci za tym su tvoje medzery v znalosti principov escapovania alebo len preklep, ale na prvy pohlad vidim, ze tvoj kod neosetri ani spatne lomitko => aplikacia je derava ako sito. Aj bez toho sa mi to zda ako nevhodne riesenie, addslashes sa da v zriedkavych pripadoch oklamat (pogoogli addslashes bypass), a vobec, naozaj chces umoznit uzivatelovi zmenit obsah ktorehokolvek pola alebo aby zadanim nezmyselneho nazvu pola vyvolal chybovu hlasku?


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2011 15:40 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Ďuri:
Neviem či som nepochopil, ale keď som skúšal ten kódik, tak spätné lomítka escapovalo ako som potreboval. Asi myslíš, že ho treba zdvojiť. Ale to len ak je na konci toho výčtu.

A ide tu o to, že užívateľ má práve vybrať polia ktoré chce mať zaškrtnuté. Ako inak by som to mohol riešiť?

Zadanie chybového poľa je jasná správa o nekalých úmysloch a to neriešim....

PS: Ako vidím tak mám medzery, dvojité lomítko mi to zežerie...


Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

tvrdohlavec tvrdohlavy

camo píše:
Ako inak by som to mohol riešiť?


uz ti to bolo niekolko krat povedane..

povedz mi, co mas proti whitelistu? vytiahnes si teda kluce z DB do pola, a uz len kontrolujes funkciami. Napr. mozes pouzit in_array(). Je to najbezpecnejsie a mozno aj najefektivnejsie.. Nechapem, co na tom vidis neefektivne..


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2011 19:11 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Emer:
No neefektívne mi to príde preto, že:
1. je tam požiadavka na DB navyšše
2. porovnávať sa musia dve roziasiahle polia
3. okrem toho musím ošetriť aj hodnoty

Či to je málo? Mne to pride ako dost...

Ja sa pýtam hlavne preto, aby som do toho dostal nejaké svetlo a vy reagujete ako keby som vám chcel odhryznúť z nosa.
Asi lepšie by som urobil keby som sem dal nejaký kód s addslashes a napísal vám, že by som potreboval aby mi niekto napísal ten kód lebo mi to nefachá, tak ako to tu býva zvykom...


PS:
Takúto escape funkciu som našiel v knihe Zranitelný kód:
Kód:
function SQLstring($s){
                             $s= str_replace("`", "``", $s);
                             $s= str_replace("\\", "\\\\", $s);
                             return "`". $s . "`";
               }


Tá by sa vám ako pozdávala?

Napadá ma, že by bolo ideálne ak by saa dali do insertu písať čísla stĺpcou. Ale nevyzerá to, že by to šlo...


Naposledy upravil camo dňa 30.08.2011 19:30, celkovo upravené 1

Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

1. poziadavku ti staci spravit raz a ulozit to "rucne" do pola zapisom $pole = array(...);, no aj keby. vravel si, ze klucov su desiatky - to je pre DB nieje vobec problem, 1 ms ta nezabije. no popripadne existuje aj cachovanie

2. co su to rozsiahle polia? 100 prvkov vobec nie je rozsiahle pole. raz som robil porovnavanie prvkov v poli, mal som ich okolo 40 000 - 60 000 !! a spravilo to za cca 0.3 sekundy. takze tvoja stovka je oproti tomu neuplny prd.

3. PHP nie je na tom az tak zle, zeby mu to robilo problem...

edit::

ze si to ty spravil som ti taky minitest..

$_POST['pole']['item'] kombinácia viacerých typov inputov

v1 - pouzitie tej tvojej SQLstring
v2 - addslashes
v3 - addcslashes
v4 - porovnavanie pola sposob 1
v5 - porovnavanie pola sposob 2

ako vidis, porovnavanie pola oboma sposobmi je takmer identicke. addslashes je najrychlejsie a addcslashes je o nieco malinko rychlejsie ako porovnavanie pola.

moj zaver - whitelist je najbezpecnejsi, sice z tych troch sposobov najpomalsie (neratam tamtu tvoju funkciu). no pomalsi je iba o nepatrny cas, kedze meranie sa vykonalo pri 10 000 operaciach. ty ich budes mat 100...

takze chces ist na ukor bezpecnosti len aby si bol o 1-2 milisekundy rychlejsi?!


Naposledy upravil emer dňa 30.08.2011 19:38, celkovo upravené 1

_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2011 19:37 | $_POST['pole']['item'] kombinácia viacerých typov inputov

Vidíš, to ma celkom ukľudnilo, ja som si myslel, že desiatky je už dosť veľa.
Ale ty si to zrejme robil na localhoste, kde máš celý výkon len sám pre seba, nie?
Lebo som kdesi čítal, že PHP a polia sú práve neni, až taký kamaráti...

Ja to teda spravím tým whitelistom

EDIT:
Vlastne ešte ak dovolíte, čo si myslíte o tej funkcii čo som sem dal v predošlom príspevku z tej knihy. Ako to že neošetruje všetky tie znaky ako napr. mysql_real_escape_string().


Naposledy upravil camo dňa 30.08.2011 19:40, celkovo upravené 1

Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 26.12.06
Prihlásený: 30.10.17
Príspevky: 4009
Témy: 181 | 181
Bydlisko: Nitra / Bra...
Vek: 24

doplnil som ti predosli post.. neviem, nidky som si nevsimol zeby nebol PHP kamarat s poliami, skor by som povedal naopak. no neviem ako je to v inych jazykoch (java, asp)

navys som raz cital nejaku myslienku o poliach v php, ze vyuziva uz neviem ake tabulky, a preto je to velmi rychle.

// pridané po 1 minúte od posledného príspevku

este doplnam, ze to porovnavanie pola som robil tak, ze pole sa vytvorilo 10 000 krat, teda pri kazdom opakovani. to tiez mohlo operaciu spomalit, tebe sa bude inicializovat iba raz


_________________
Sorry za prelkepy
Offline

Užívateľ
Užívateľ
$_POST['pole']['item'] kombinácia viacerých typov inputov

Registrovaný: 05.09.09
Príspevky: 1157
Témy: 127 | 127
Bydlisko: Lehota pod ...
Napísal autor témyOffline : 30.08.2011 19:46 | $_POST['pole']['item'] kombinácia viacerých typov inputov

emer:
Moc ti ďakujem za námahu.

A k tomu snáď pojde použiť priamo porovnanie kľučov array_diff_key()


 [ Príspevkov: 21 ] 


$_POST['pole']['item'] kombinácia viacerých typov inputov



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Odoslanie viacerých údajov z inputov

v PHP, ASP

15

481

25.03.2010 7:46

emer

V tomto fóre nie sú ďalšie neprečítané témy.

Súčet inputov

v JavaScript, VBScript, Ajax

3

213

25.02.2012 12:30

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Ochrana inputov

v PHP, ASP

2

170

14.11.2011 16:09

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

Overovanie inputov

v JavaScript, VBScript, Ajax

5

345

28.01.2009 0:23

Blackdevil

V tomto fóre nie sú ďalšie neprečítané témy.

Velkosti typov

v Assembler, C, C++, Pascal, Java

5

274

12.04.2011 17:16

street_punk

V tomto fóre nie sú ďalšie neprečítané témy.

vyber vsetkych typov

v PHP, ASP

14

574

20.12.2007 16:47

mondzo

V tomto fóre nie sú ďalšie neprečítané témy.

Veľkosť dátových typov

v Databázy

4

253

08.02.2013 21:51

Matus795

V tomto fóre nie sú ďalšie neprečítané témy.

zaklad filtrovacieho systemu (kontrola akcii inputov)

v JavaScript, VBScript, Ajax

15

590

25.01.2011 16:19

DeeJay3

V tomto fóre nie sú ďalšie neprečítané témy.

innerHTML - maze zadane udaje do inputov

v JavaScript, VBScript, Ajax

3

654

09.01.2009 22:05

Blackshadow

V tomto fóre nie sú ďalšie neprečítané témy.

Nacitanie hodnot z tabulky do inputov

v JavaScript, VBScript, Ajax

0

181

19.03.2010 23:38

wolf14

V tomto fóre nie sú ďalšie neprečítané témy.

viacero typov uzivatelov pri vypise komentarov

v Databázy

2

451

18.01.2011 17:41

Feko

V tomto fóre nie sú ďalšie neprečítané témy.

Ktorý chladič z 2 typov na výber

v AMD - Advanced Micro Devices

1

215

08.04.2017 9:20

patro16

V tomto fóre nie sú ďalšie neprečítané témy.

Recenzia typov sluchadiel do mp3/CD playera

v Ostatné

1

408

26.04.2007 22:33

Jeremi

V tomto fóre nie sú ďalšie neprečítané témy.

Zobrazovanie rôznych typov obsahov na jednej stránke

v Redakčné systémy

1

271

09.05.2012 20:25

programmer

V tomto fóre nie sú ďalšie neprečítané témy.

5 typov internetových osobností. Otestujte sa, kam patríte.

v Novinky

5

241

12.10.2013 18:04

FanatiKKK

V tomto fóre nie sú ďalšie neprečítané témy.

Kombinácia RAM

v Intel čipové sady

5

946

23.05.2006 0:36

Rasputin



© 2005 - 2017 PCforum, edited by JanoF