Zadejte hledaný výraz...

Mysql select – Where s pomlčkou ?

Karel Řehák
verified
rating uzivatele
17. 9. 2010 07:12:15
Napsal vedouci;570717
a je ti jasne, ze kdyz bude $model obsahovat retezec ve tvaru: ' or ''=', tak to vrati komplet vsechny zaznamy nezavisle na sloupci "sloupec"? rika se tomu sql injection...
Ale tak to je věc druhá, co se do toho pustí za data - teď se řešila pomlčka a ne apostrofy :)
Když se všechny zpětný lomítka v $model jednoduše nahraděj za \ a apostrofy za ', tak je i po problému s sql injection, ne? Ale to patří k přípravě dat pro DB, nikoliv do dotazu.
17. 9. 2010 07:12:15
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558455
Martin Klíma
verified
rating uzivatele
(13 hodnocení)
17. 9. 2010 10:38:48
Napsal AlesiBoss;570744
mezi komunitou radoby vyvojaru v php by mela probehnout nejaka osveta co se sql injection tyka... a nejen sql injection, co si budem povidat, tak to neni zdaleka jedina hrozba... vzdycky kdyz nekde vidim neoc noveho co ma ocividne svuj system tak si jen tak zkusim zabezpeceni a prekvapuje me kolik % takovych projektu prilis zabezpeceni nepobralo, nejhoris je ze se to kolikrat tyka i vetsich projektu...
Souhlasím s Neddy.eu, řešíme tu SQL příkaz a to co je v proměnné $model nidko neví. Nemůžeme automaticky předpokládat, že je to vstup z venčí a i kdyby byl, tak minimálně validace dat by se měla dělat už předtím než se tvoří SQL příkaz.
17. 9. 2010 10:38:48
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558454
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
17. 9. 2010 13:55:48
Souhlasím s Neddy.eu, řešíme tu SQL příkaz a to co je v proměnné $model nidko neví. Nemůžeme automaticky předpokládat, že je to vstup z venčí a i kdyby byl, tak minimálně validace dat by se měla dělat už předtím než se tvoří SQL příkaz.
a ja zase tvrdim, ze tohle je prasecina nejvetsiho kalibru - tak to proste nedelejte - tohle neni programovani, tohle je lepeni!
Napsal Neddy.eu;570752
Ale tak to je věc druhá, co se do toho pustí za data - teď se řešila pomlčka a ne apostrofy :)
Když se všechny zpětný lomítka v $model jednoduše nahraděj za \ a apostrofy za ', tak je i po problému s sql injection, ne? Ale to patří k přípravě dat pro DB, nikoliv do dotazu.
sql injection neni jenom pomlcka, apostrof a uvozovky - tech veci tam muze byt vic, napriklad u ciselnych typu - tam se vetsinou nepouzivaji apostrofy vubec a pak muzes predat 1 or 1=1.
mezi komunitou radoby vyvojaru v php by mela probehnout nejaka osveta co se sql injection tyka... a nejen sql injection, co si budem povidat, tak to neni zdaleka jedina hrozba... vzdycky kdyz nekde vidim neoc noveho co ma ocividne svuj system tak si jen tak zkusim zabezpeceni a prekvapuje me kolik % takovych projektu prilis zabezpeceni nepobralo, nejhoris je ze se to kolikrat tyka i vetsich projektu...
bohuzel mas pravdu - tech utoku (a zranitelnosti) je cela rada - sql injection a xss jsou jenom zacatek - pokracujeme na xsrf, podvrhnuti session, clickjacking, brute-forcing hesla, ukladani hesel v plain-textu, ukladani hesel v md5, a tak dale :-/
17. 9. 2010 13:55:48
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558453
Karel Řehák
verified
rating uzivatele
17. 9. 2010 16:18:41
Napsal vedouci;570902
a ja zase tvrdim, ze tohle je prasecina nejvetsiho kalibru - tak to proste nedelejte - tohle neni programovani, tohle je lepeni!
Mně zas jako prasečina přijde dělat věci, které jsou naprosto zbytečné. Pokud má programátor vlastnoručně napsané pole v php, ve kterém má uložená data pro db, tak nevidím důvod, proč neudělat takto jednoduchý dotaz, když přesně ví, která data tam posílá a jiná se tam nedostanou.
Co se týče číselných typů a databáze - než pošlu číslo do databáze, v přípravě dat si ověřím, jestli se jedná o číslo, a pak mi tam místo toho přeci nikdo nemůže podstrčit textový řetězec... Pokud by se ale používaly apostrofy, tak číslo nečíslo, nikdo tam nic špatnýho nepodstrčí (pokud by apostrofy v řetězci byly escapovány).
17. 9. 2010 16:18:41
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558452
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
17. 9. 2010 18:40:21
vidis? a prestoze delam vec, ktera je dle tebe zbytecna, tak mam min prace (nemusim nic overovat) - divne, co? ;)
17. 9. 2010 18:40:21
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558451
Jan Brabec
verified
rating uzivatele
(2 hodnocení)
17. 9. 2010 20:44:40
Ono to takhle vypadá krásně, když je tam jenom 1 parametr, ale u složitějších dotazů mi prepared statementy přijdou nepřehledné. To si raději proměnné ověřim předem.
17. 9. 2010 20:44:40
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558450
Karel Řehák
verified
rating uzivatele
17. 9. 2010 21:35:09
Napsal vedouci;571005
vidis? a prestoze delam vec, ktera je dle tebe zbytecna, tak mam min prace (nemusim nic overovat) - divne, co? ;)
Mícháš jabka s hruškama. Přečti si ten můj první odstavec znovu a dojde ti, že nemusíš nic ověřovat a ani používat prepared statementy (se kterými sis přidal práci navíc).
Druhý odstavec jsem dal bokem schválně, protože se nevztahoval k aktuálnímu problému. A pokud se jedná o data přijímaná od uživatele, tak je nesmysl je neověřovat, jelikož vše se dá upravit a uživatel může na web poslat úplně jiné hodnoty, než jsou v možnostech formulářů. Neověřování vstupních dat dělalo i Líbímseti a část výsledku je vidět zde: http://blog.neddy.eu/89/libimseti.cz-hack-hacking-zabava/
17. 9. 2010 21:35:09
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558449
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
17. 9. 2010 22:14:38
ja pouzivam svou vlastni nadstavbu, ktera to dela automaticky:
db :: query ( "select from users where login = ?", $_GET );
overovat nic nemusim, protoze escapovani probiha automaticky diky pdo, syntaxe je pro me (subjektivne) hezci, protoze mam vsechno na jednom radku.
a ikdyz mame jasne definovany a overeny vstup, tak je to porad "lepeni" dotazu - takhle je to proste prehlednejsi - je jasne dane, ze misto otazniku muze byt jenom login uzivatele a nic vic tam uz byt nemuze (nemusim studovat, co v te promenne je a nebo muze byt)
a krom toho je tady jeste jedna vec - kazdy system se vyvyji - kdyz se rozhodnes, ze tu promennou budes plnit od uzivatele, tak musis projit vsechny vyskyty a zkontrolovat je, ja to delat nemusim, protoze uz mam garantovane, ze probehne escapovani.
takze - pro me je to prasecina, tim bych to uzavrel.
17. 9. 2010 22:14:38
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558448
Václav Mach
verified
rating uzivatele
(13 hodnocení)
17. 9. 2010 22:32:36
Napsal Neddy.eu;570752
Ale tak to je věc druhá, co se do toho pustí za data - teď se řešila pomlčka a ne apostrofy :)
Když se všechny zpětný lomítka v $model jednoduše nahraděj za \ a apostrofy za ', tak je i po problému s sql injection, ne? Ale to patří k přípravě dat pro DB, nikoliv do dotazu.
tohle je opravdu nedostatečné, ale jednoduche real_escape_string na uživatelem zadaná řetězcová data je myslím bezpečné, ikdyž i tam bývaly díry při nějakých exotických kodováních
17. 9. 2010 22:32:36
https://webtrh.cz/diskuse/mysql-select-where-s-pomlckou/strana/2#reply558447
Pro odpověď se přihlašte.
Přihlásit