Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ 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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok NapísalOffline : 23.08.2011 11:21

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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 23.08.2011 15:56

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 23.08.2011 16:33

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.08.2011 22:22

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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 29.08.2011 22:44

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.08.2011 22:48

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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 29.08.2011 22:53

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.08.2011 22:58

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ý: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 29.08.2011 23:34

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 29.08.2011 23:44

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: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 30.08.2011 9:59

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2011 12:11

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ý: 18.01.22
Príspevky: 1188
Témy: 198
Príspevok NapísalOffline : 30.08.2011 14:51

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: 4088
Témy: 34
Bydlisko: Brno
Príspevok NapísalOffline : 30.08.2011 15:16

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2011 15:40

Ď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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 30.08.2011 17:25

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2011 19:11

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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 30.08.2011 19:27

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2011 19:37

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ý: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 30.08.2011 19:41

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: 1141
Témy: 127
Bydlisko: Lehota pod ...
Príspevok Napísal autor témyOffline : 30.08.2011 19:46

emer:
Moc ti ďakujem za námahu.

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


Odpovedať na tému [ Príspevkov: 21 ] 


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

749

25.03.2010 7:46

emer Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

3

497

25.02.2012 12:30

shaggy Zobrazenie posledných príspevkov

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

v PHP, ASP

2

362

14.11.2011 16:09

chrono Zobrazenie posledných príspevkov

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

v JavaScript, VBScript, Ajax

5

536

28.01.2009 0:23

Blackdevil Zobrazenie posledných príspevkov

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

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

5

509

12.04.2011 17:16

street_punk Zobrazenie posledných príspevkov

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

v PHP, ASP

14

861

20.12.2007 16:47

mondzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Veľkosť dátových typov

v Databázy

4

505

08.02.2013 21:51

Matus795 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. zaklad filtrovacieho systemu (kontrola akcii inputov)

v JavaScript, VBScript, Ajax

15

772

25.01.2011 16:19

DeeJay3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. innerHTML - maze zadane udaje do inputov

v JavaScript, VBScript, Ajax

3

814

09.01.2009 22:05

Blackshadow Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nacitanie hodnot z tabulky do inputov

v JavaScript, VBScript, Ajax

0

372

19.03.2010 23:38

wolf14 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. viacero typov uzivatelov pri vypise komentarov

v Databázy

2

646

18.01.2011 17:41

Feko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Diaľkový ovládač na viac typov brán

v Ostatné

0

300

27.09.2022 20:56

matmatmat Zobrazenie posledných príspevkov

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

690

08.04.2017 9:20

patro16 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Recenzia typov sluchadiel do mp3/CD playera

v Ostatné

1

601

26.04.2007 22:33

Jeremi Zobrazenie posledných príspevkov

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

429

09.05.2012 20:25

programmer Zobrazenie posledných príspevkov

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

534

12.10.2013 18:04

FanatiKKK Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra