abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:11 | Zajímavý software

    BreezyBox je open-source shell a virtuální terminál pro populární jednočip ESP32. Nabízí základní unixové příkazy, sledování aktuálního pracovního adresáře (CWD), jednoduchý instalátor a spouštěč aplikací v podobě ELF binárních souborů, zabudovaný HTTP server nebo třeba ovládání WiFi - ukázka použití coby 'malého osobního počítače'. Ačkoliv je BreezyBox inspirovaný BusyBoxem, oproti němu má tento projekt několik externích závislostí, zejména na ESP-IDF SDK. BreezyBox je dostupný pod licencí MIT.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 16:00 | Humor

    Byl představen cross-assembler xa.sh, napsaný čistě v Bourne shell skriptu. Tento nástroj umožňuje zpracovávat assemblerový kód pro Intel 8080, přičemž je možné snadno přidat podporu i pro další architektury, například 6502 a 6809. Skript využívá pouze různé běžné unixové příkazy jako jsou awk, sed nebo printf. Skript si lze stáhnout z GitHubového repozitáře projektu.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 17:22 | IT novinky

    Byla představena nová verze modelu Claude Opus 4.6 od společnosti Anthropic. Jako demonstraci možností Anthropic využil 16 agentů Claude Opus 4.6 k vytvoření kompilátoru jazyka C, napsaného v programovacím jazyce Rust. Claude pracoval téměř autonomně, projekt trval zhruba dva týdny a náklady činily přibližně 20 000 dolarů. Výsledkem je fungující kompilátor o 100 000 řádcích kódu, jehož zdrojový kód je volně dostupný na GitHubu pod licencí Creative Commons.

    NUKE GAZA! 🎆 | Komentářů: 16
    včera 16:44 | Komunita

    Kultovní britský seriál The IT Crowd (Ajťáci) oslavil dvacáté výročí svého prvního vysílání. Sitcom o dvou sociálně nemotorných pracovnících a jejich nadřízené zaujal diváky svým humorem a ikonickými hláškami. Seriál, který debutoval v roce 2006, si i po dvou dekádách udržuje silnou fanouškovskou základnu a pravidelně se objevuje v seznamech nejlepších komedií své doby. Nedávné zatčení autora seriálu Grahama Linehana za hatecrime však vyvolává otázku, jestli by tento sitcom v současné Velké Británii vůbec vznikl.

    NUKE GAZA! 🎆 | Komentářů: 5
    včera 13:33 | IT novinky

    Společnost JetBrains oznámila, že počínaje verzí 2026.1 budou IDE založená na IntelliJ ve výchozím nastavení používat Wayland.

    Ladislav Hagara | Komentářů: 4
    včera 11:22 | IT novinky

    Společnost SpaceX amerického miliardáře Elona Muska podala žádost o vypuštění jednoho milionu satelitů na oběžnou dráhu kolem Země, odkud by pomohly zajistit provoz umělé inteligence (AI) a zároveň šetřily pozemské zdroje. Zatím se ale neví, kdy by se tak mělo stát. V žádosti Federální komisi pro spoje (FCC) se píše, že orbitální datová centra jsou nejúspornějším a energeticky nejúčinnějším způsobem, jak uspokojit rostoucí poptávku po

    … více »
    Ladislav Hagara | Komentářů: 23
    včera 11:11 | Nová verze

    Byla vydána nová verze 2.53.0 distribuovaného systému správy verzí Git. Přispělo 70 vývojářů, z toho 21 nových. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Komunita

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 216. sraz, který proběhne v pátek 20. února od 18:00 v Red Hat Labu (místnost Q304) na Fakultě informačních technologií VUT v Brně na ulici Božetěchova 1/2. Tématem srazu bude komunitní komunikační síť MeshCore. Jindřich Skácel představí, co je to MeshCore, předvede nejrůznější klientské zařízení a ukáže, jak v praxi vypadá nasazení vlastního repeateru.

    Ladislav Hagara | Komentářů: 0
    včera 03:33 | Nová verze

    Byla vydána nová major verze 9.0 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    5.2. 13:55 | IT novinky

    Hodnota Bitcoinu, decentralizované kryptoměny klesla pod 70 000 dolarů (1,44 milionu korun).

    Ladislav Hagara | Komentářů: 14
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (26%)
     (3%)
     (5%)
     (2%)
     (12%)
     (29%)
    Celkem 792 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Mysql: injection

    4.4.2011 13:08 junak
    Mysql: injection
    Přečteno: 2278×
    Ahoj, může mi prosím někdo názorně ukázat, jak opravit tento dotaz proti mysql injection?

    $sql = mysql_query("SELECT * FROM category WHERE parent=0");

    Pročetl jsem kde co ale bud jsem fakt debil, nebo potřebuji názornou ukázku. Díky za pomoc

    Řešení dotazu:


    Odpovědi

    4.4.2011 13:11 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Mysql: injection
    Vzhledem k tomu, že do tohoto dotazu nevstupují uživatelsky zadávaná data, je to trochu off-topic.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    Marián Oravec avatar 4.4.2011 13:34 Marián Oravec | skóre: 22 | Nitra
    Rozbalit Rozbalit vše Re: Mysql: injection
    V tomto prípade SQL injection nehrozí. Inak by to bolo v tomto prípade:

    $sql = mysql_query("SELECT * FROM category WHERE parent = " . $_GET['parent_id']);

    Potom by bolo treba ošetriť vstup takto:

    $sql = mysql_query("SELECT * FROM category WHERE parent = " . mysql_real_escape_string($_GET['parent_id']));
    Mám rád elektro, ale vypočujem si aj iné...
    Marián Oravec avatar 4.4.2011 13:36 Marián Oravec | skóre: 22 | Nitra
    Rozbalit Rozbalit vše Re: Mysql: injection
    Oprava:

    $sql = mysql_query("SELECT * FROM category WHERE parent = '" . mysql_real_escape_string($_GET['parent_id']) . "'");
    Mám rád elektro, ale vypočujem si aj iné...
    Řešení 1× (pht)
    Heron avatar 4.4.2011 13:56 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Mysql: injection
    A úplně nejlepší je použít prepared statement.
    4.4.2011 16:33 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Mysql: injection
    Přesně tak, nic jiného ani nebrat. Nevím proč je tady tolik odpovědí zabývajících se escapováním :-(

    Viz např. Prepared Statements in PHP and MySQL
    In Ada the typical infinite loop would normally be terminated by detonation.
    4.4.2011 16:54 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql: injection
    Celkem jsou tu dvě „escape“ reakce, z čehož je druhá jen oprava první :).
    Jinak to, že je to třeba ošetřit, ještě neznamená, že výše uvedená metoda je jediný správný způsob. Rád používám i očíslované parametry a větší škálu typů, proto používám raději vlastní PHP třídu, která v případě MySQL používá nejčastěji jen 'query'.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    4.4.2011 14:09 junak
    Rozbalit Rozbalit vše Re: Mysql: injection
    Moc děkuji a co když tedy ten dotaz nebude přess GET ale POST ?

    $sql = mysql_query("SELECT * FROM category WHERE parent = " . $_POST['parent_id']);

    Hrozí tady něco? Předpokládám, že POST podstrčit neůjde..
    4.4.2011 14:14 blondak | skóre: 36 | blog: Blondak | Čáslav
    Rozbalit Rozbalit vše Re: Mysql: injection
    Post podstrčit jde, zásada je taková, ničemu, co podchází od uživatele nevěřit.
    Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
    4.4.2011 14:19 junak
    Rozbalit Rozbalit vše Re: Mysql: injection
    to jmyslite takto?

    http://neco.neco/$_POST['neco']="podstrcene_value";

    Děkuji.
    4.4.2011 14:25 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql: injection
    Ne. Vytvoříte si HTML formulář s políčkem neco a action tohoto formuláře namíříte na váš web. Drsňáci ani nepotřebují ten formulář a rovnou to vyťukají přes telnet. Předpokládám tedy, že se bavíme o webové aplikaci – to jste asi zapomněl napsat.
    Heron avatar 4.4.2011 14:20 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Mysql: injection
    POST samozřejmně podstrčit jde. Jak píše předřečník, každý vstup od uživatele (nebo lépe a obecně: každý vstup do aplikace) je nutno konktrolovat a zabezpečit.

    Takhle napsaný dotaz je přímo ukázkovým příkladem toho, jak by se to dělat nemělo (a to nejen k vůli tomu SQL injection).
    4.4.2011 14:27 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql: injection
    Mezi POST a GET není v tomto směru rozdíl.
    Pro Vás černá skříňka (POST) je pro ostatní otevřená kniha… :)
    Můžete to ošulit jako (v případě 32bit integeru):
    $sql = mysql_query("SELECT * FROM category WHERE parent = " . intval($_POST['parent_id']));
    
    Nicméně, každý vstup od uživatele je třeba ošetřit (včetně hidden input-ů atd., prostě cokoliv co posílá klient-prohlížeč), to co si definujete sám, musíte vědět sám co je třeba a kde ošetřovat (velká spousta chyb software je zapříčiněna neošetřenými vstupy).
    SQL injection se lze úspěšně bránit pomocí prepared statement, nicméně to neznamená, že není třeba ošetřovat vstup.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    4.4.2011 15:20 mich | skóre: 16
    Rozbalit Rozbalit vše Re: Mysql: injection
    Možná by se hodilo něco si nejdříve zjistit o HTTP ne rovnou začít mastit weby.
    je to teď v módě, na žive o tom furt píšou
    4.4.2011 14:17 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql: injection
    SQL injection znamená, že do SQL příkazu přímo vkládáte neošetřený vstup uživatele. Uživatel vám pak může změnit prováděný příkaz. Např. pokud by váš kód obsahoval SELECT * FROM category WHERE parent=$parent (kde $parent by byl vstup od uživatele), mohl by vám uživatel do parent vložit „hodnotu“ 0; DELETE FROM category, takže ve výsledku by se provedly dva příkazy SELECT * FROM category WHERE parent=0; DELETE FROM category. ve vašem kódu žádný vstup od uživatele nemáte, takže SQL injection nehrozí.
    4.4.2011 14:23 junak
    Rozbalit Rozbalit vše Re: Mysql: injection
    Dekuji

    V tomto pripade tedy o SQL injection nehrozi ale vstupy od uzivatele budou taky, cili se na to musim zamerit.

    Vsude se pise, ze uzivatel podstrci to nebo on, ale nikde se nepise jak to podstrci, vzdyt nema jak, jedine co me napada je, ze veskere napadeni je mozne jen pres URL, nebo se pletu?
    Marián Oravec avatar 4.4.2011 14:29 Marián Oravec | skóre: 22 | Nitra
    Rozbalit Rozbalit vše Re: Mysql: injection
    Mám rád elektro, ale vypočujem si aj iné...
    4.4.2011 14:31 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql: injection
    Může změnit cokoli, co od něj načítáte. Pokud načítáte parametry z URL, může změnit ty, pokud načítáte hodnoty z formuláře posílaného POSTem, může změnit hodnoty formuláře, pokud jako vstup používáte část URL, může změnit to.

    Např. místo
    http://www.example.com/view.php?parent_id=0
    pošle (s příslušným escapováním)
    http://www.example.com/view.php?parent_id=0;DELETE FROM catalog
    Místo
    <form>
    <input name="parent_id" value="0">
    </form>
    
    pošle
    <form>
    <input name="parent_id" value="0; DELETE FROM catalog">
    </form>
    
    Místo
    http://www.example.com/view/0
    pošle (s příslušným escapováním
    http://www.example.com/view/0; DELETE FROM catalog
    Jak psal nahoře Heron, nejlepší je použít prepared statements.
    4.4.2011 14:46 junak
    Rozbalit Rozbalit vše Re: Mysql: injection
    Budiz, ale kde vezme utocnik nazev tabulky? Aby ji mohl smazat?
    4.4.2011 14:53 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql: injection
    Asi nevolíte jako název 'asdfasdlfkasfopkewklweoppok'.
    A taky byla uvedena nejednoduší možnost.
    Přistupte k tomu tak, že to co Vás v nejhorším snu nenapadne, je jen 0.1 % toho co je možné.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    4.4.2011 15:00 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql: injection
    Uhodne, zjistí ji v chybovém výpisu, zavolá nejdřív SHOW TABLES a přečte si jej ve vrácené stránce… Nejde vůbec o to, co konkrétně v té databázi spustí za příkaz a co k němu potřebuje znát (třeba volání DROP DATABASE teoreticky parametr nepotřebuje a může smazat aktuální databázi). Jde o to, že tímhle způsobem umožníte útočníkovi spustit libovolný SQL příkaz, na který má práva uživatel, pod kterým k databázi přistupujete. Máte databázi zabezpečenou tak, že to ničemu nevadí? Zveřejníte klidně přístupové údaje k té databázi včetně její adresy? Pokud ano, pak se SQL injection nemusíte bát. Webové aplikace jsou ale zpravidla dělané tak, že databáze není moc zabezpečená a nepředpokládá se, že do ní bude mít přímý přístup někdo jiný, než správce. O zabezpečení se pak stará webová aplikace, která je mezi databází a útočníkem.
    4.4.2011 18:31 Sten
    Rozbalit Rozbalit vše Re: Mysql: injection
    Ale on nemusí vůbec mazat tabulku. Úplně stačí když jako jméno uvede:
    ' OR 1=1 --
    což by váš skript mohl snadno vložit do dotazu jako:
    SELECT 1 FROM `users` WHERE `user` = '${_POST["user"]}' AND `password` = crypt('${_POST["password"]}')
    A útočník se hned může přihlásit jako libovolný uživatel :-)
    4.4.2011 14:36 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql: injection
    Pravděpodobně pracujete s mylným předpokladem, že na stránku Vám přijde vstup který jste si sám nadefinoval na stránce zdrojové.
    Odeslat požadavek na server z jakýmkoliv obsahem či jakýmkoliv způsobem (zde GET/POST) může kdokoliv a jakkoliv.
    Pokud je zmiňované $parent třeba $_POST['parentid'] nebo $_GET['parentid'] a je to váš <select> a v <option> jste si zvolil jen čísla, ještě neznamená, že vám dojde vybrané číslo. Klidně Vám tam může dojít místo '3' zmiňované '3; DELETE FROM table'.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    5.4.2011 10:55 R
    Rozbalit Rozbalit vše Re: Mysql: injection
    Pekne vysvetlenie, az na to, ze to v PHP+MySQL nefunguje. Pretoze v mysql_query moze byt len jeden SQL prikaz.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.