Ve věku 91 let zemřel izraelský informatik Ja'akov Ziv, spolutvůrce bezztrátových kompresních algoritmů LZ77, LZ78 a LZW (Lempel–Ziv–Welch).
Byla představena nová Arduino deska Arduino UNO R4 s 32bitovým MCU RA4M1 (Arm Cortex-M4). Desku lze zatím získat pouze v rámci early access programu.
Operační systém MidnightBSD, fork FreeBSD optimalizovaný pro desktop s prostředím Xfce, byl vydán ve verzi 3.0. Přehled novinek v poznámkách k vydání.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Neurodeck: Psychological Deckbuilder (ProtonDB).
Alex Ellis upozornil 15. března, že firma Docker se chystala zrušit bezplatný hosting open-source projektů na Docker Hubu. Po vlně odporu se představitelé firmy omluvili a posléze byl původní záměr odvolán.
Ve věku 94 let zemřel Gordon Moore, mj. spoluzakladatel společnosti Intel a autor Moorova zákona.
Mercurial (Wikipedie), software pro SCM (Source Code Management), byl vydán ve verzi 6.4. Přehled novinek v poznámkách k vydání. Ve dnech 5. až 7. dubna proběhne konference Mercurial Paris.
Byly rozdány Ceny Velkého bratra (Big Brother Awards) za rok 2022 pro největší slídily pořádané nevládní organizací Iuridicum Remedium. Dlouhodobý slídil: Microsoft. Firemní slídil: Seznam. Úřední slídil: Nejvyšší správní soud. Výrok Velkého bratra: Marian Jurečka. Pozitivní cena: NoLog.
Byla představena online vzdělávací platforma Ada Computer Science pro učitele, studenty a kohokoli, kdo se zajímá o informatiku. Stojí za ní Raspberry Pi Foundation a Univerzita v Cambridgi.
GitHub má nový RSA SSH klíč. Předchozí soukromý klíč byl krátce vystaven na GitHubu.
foreach($_GET as $K=>$V) { $_GET[$K]=Safe($V); } foreach($_POST as $K=>$V) { $_POST[$K]=Safe($V); } foreach($_COOKIE as $K=>$V) { $_COOKIE[$K]=Safe($V); } function Safe($Value) { return trim(str_replace(array("'",'"',"`"),'',$Value)); }samotná premenná v SQL dotaze je samozrejme v úvodzovkách
select ID from pouzivatel where (meno="$_POST[meno]" and heslo="$_POST[heslo]")Pokiaľ ma moje slabé vedomosti neklamú, tak SQL injection sa robí práve cez "http vstupy" do aplikácie ($_REQUEST nepoužívam nikde) a týmto by to malo byť úplne ošetrené. Alebo sa kruto mýlim? Ak áno, na čo ešte treba myslieť? Ak by to niekoho zaujímalo, tak znaky " ' ` odstraňujem pomocou str_replace preto, lebo som si istý, že ich používateľ nebude nikdy potrebovať. Vopred vám veľmi pekne dakujem za odpovede a podnety.
Řešení dotazu:
<?php $db = new PDO('...'); $select = $db->prepare("SELECT id FROM pouzivatel WHERE meno=? AND heslo=?"); $select->execute(array($_POST[meno], $_POST[heslo]));Do superglobálních proměnných $_GET, $_POST a $_COOKIE nikdy nic nezapisuj. Jsou určeny pouze pro čtení.
Safe()
alespoň použij funkci mysql_real_escape_string()
, která to na rozdíl od té tvé udělá dobře.
Zapisování do těchto superglobálních proměnných je plýtváním pamětí a výkonem. Navíc tím modifikuješ vstupní data, což je nežádoucí. Takový program pak mlží. Jsou to vstupní proměnné.
Tvůj výmysl ti nepomůže.
mysql_real_escape_string()
, která byla vyvinuta přesně pro tento účel a dělá to dobře. Nevynalézej kolo.
Místo funkceMožná. Pokud funguje úplně stejně jako parser SQL v MySQL a pokud je úplně stejně nakonfigurovaná. Stačí třeba jen se neshodnout ve vstupním kódování, a už to může být problém. Ano, je lepší použít tuhle funkci než nějakou svou samo-domo velmi přibližnou, ale já bych tu funkci rozhodně za 100% bezpečnou nepovažoval.Safe()
alespoň použij funkcimysql_real_escape_string()
, která to na rozdíl od té tvé udělá dobře.
Pomože mi ten môj výmysel, alebo nie?Nie, Tvoj výmysel prinesie viac problémov než úžitku. Prestaň špekulovať a urob to čo je správne - mysql_real_escape_string() alebo PDO.
Databáze "čistá" data neobsahuje a nikdy obsahovat nebude, neboť SQL injection tak nefunguje.A ako teda funguje?
Navíc se podívej ještě na cross site scripting a cross site request forgery. Jsem si celkem jist, že to tam budeš mít také.Áno, a ešte navyše k tomu som škaredý, koktavý a všeobecne nehodný používať počítač.
Přepis na PDO není nijak zcestný, tak jako tak musíš projít všechny dotazy do databáze a opravit je, zda tam budeš cpát mysql_real_escape_string nebo vyměníš volání funkce vyjde nastejno, pokud si přpravíš vhodný wrapper okolo PDO, aby odpovídal starému kódu, tak to bude i znatelně jednodušší.Od začiatku tvrdím, že si plne uvedomujem, že toto riešenie je jediné správne a čisté a zároveň tvrdím, že to aj plánujem urobiť. Ja sa vôbec nehádam o tom, že niečo iné by malo byť jednoduchšie, lepšie a čo ja viem aké ešte. Sám v iných - nových - projektoch používam PDO s prepared, ... takže je mi ohľadom toho všetko jasné.
Tvůj zvyk s úvozovkami SQL injection neřeší, ba naopak, takto zranitelnost na SQL injection vzniká.Ako?
A ten první odkaz si rač vetnout za klobouk, vše co v této diskuzi je, je k tématu. Prostě to jen děláš blbě a bylo ti to řečeno.Nie, ten odkaz sedí ako "riť na šerbeľ". Krútime sa tu dookola s niečim čo mi je plne jasné, čo akceptujem, nepopieram a sám využívam. Ale na pôvodnú otázku som odpoveď stále nedostal a toto je kameň úrazu. To je až také ťažké pochopiť? Ja som sa pýtal na jednu veľmi jednoduchú vec - ak zmažem v $_GET, $_POST, $_COOKIE úvodzovky (" ' `) aké má útočník ďalšie možnosti čo sa týka SQL injection??? Alebo jedina správna odpoveď je typu: "to ťa nemusí zaujímať, si hlupák, nemal by si používať pc, nieto ešte patlať nejake akožeprogramy"? To ste vy géniovia fakt tak nepoužitelný v reálnom živote, že máte problém chápať jednoduché otázky?
Jak ten odkaz souvisí s tématem?Tak, že ja sa pýtam na to ako čo najjednoduchšie, najrýchlejšie a najkrajšie zakryť zhrdzavené podbehy na aute a odpoveď je stále tá istá - kúp si nové auto.
Čistá data v databázi? Utopie.Prečo? Keď nedovolím zapísať nejakú háveď tak je jasné, že tu hávaď nemám ani ako prečítať. A ak má útočník iný prístup k db, tak mu asi bude jedno čo ja robím v programe.
Máš nastavený i jazyk? Asi ne, že?Teraz trošičku som mimo čo myslíš, ale ak "utf8_general_ci", tak áno
Místo týdne strávíš dva. To se vyplatí!??? Čo prosím? Ja teraz riešim nechutný hack aby som sa minútu hnusne/nechutne zaplátal dieru tak čo potom tie 2 týždne?
Ano, směřuje k PDO.Nie, smeruje to k urážke, lebo som si dovolil pýtať sa na otázku, na ktorú som stále nedostal odpoveď.
Technické řešení problému jsi dostal. Teď už se bavíme jen o tom, že nejsi ochoten ho přijmout a stále hledáš alternativy. Klidně hledej dál...Technické riešenie - to správne - som ani dostať nemusel, lebo som o ňom vedel už pred položením otázky - opakujem ešte raz - ohľadom PDO je mi všetko jasné. Odpoveď na moju otázku ale proste stále jednoznačne neprišla. Čo na to povedať.
Tiskni
Sdílej: