Jakub Jelínek oznámil vydání verze 15.1 (15.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 15. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Byly vyhlášeny výsledky letošní volby vedoucího projektu Debian (DPL, Wikipedie). Staronovým vedoucím zůstává Andreas Tille.
Jason Citron končí jako CEO Discordu. Od pondělí 28. dubna nastupuje nový CEO Humam Sakhnini, bývalý CSO Activision Blizzard.
Článek na Libre Arts představuje baskytarový multiefekt Anagram od společnosti Darkglass Electronics. S Linuxem uvnitř (licence, GitHub).
Městský soud v Praze vyhlásil rozsudek, který vyhověl žalobě novináře Jana Cibulky, který s podporou spolku IuRe (Iuridicum Remedium) požadoval omluvu od státu za to, že česká legislativa nařizuje operátorům uchovávat metadata o elektronické komunikaci. To je přitom v rozporu s právem. Stát se musí novináři omluvit a zaplatit náklady řízení. Především je ale součástí přelomové rozhodnutí o nelegálnosti shromažďování dat a o
… více »Americké technologické firmy Apple a Meta Platforms porušily pravidla na ochranu unijního trhu, uvedla včera Evropská komise (EK). Firmám proto vyměřila pokutu – Applu 500 milionů eur (12,5 miliardy Kč) a Metě 200 milionů eur (pět miliard Kč). Komise to oznámila v tiskové zprávě. Jde o první pokuty, které souvisejí s unijním nařízením o digitálních trzích (DMA). „Evropská komise zjistila, že Apple porušil povinnost vyplývající z nařízení
… více »Americká společnost OpenAI, která stojí za chatovacím robotem ChatGPT, by měla zájem o webový prohlížeč Chrome, pokud by jeho současný majitel, společnost Google, byl donucen ho prodat. Při slyšení u antimonopolního soudu ve Washingtonu to řekl šéf produktové divize ChatGPT Nick Turley.
Po roce vývoje od vydání verze 1.26.0 byla vydána nová stabilní verze 1.28.0 webového serveru a reverzní proxy nginx (Wikipedie). Nová verze přináší řadu novinek. Podrobný přehled v souboru CHANGES-1.28.
Byla vydána nová verze 10.0.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 211 vývojářů. Provedeno bylo více než 2 800 commitů. Přehled úprav a nových vlastností v seznamu změn.
42 svobodných a otevřených projektů získalo finanční podporu od NLnet Foundation (Wikipedie).
Řešení dotazu:
$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']));
$sql = mysql_query("SELECT * FROM category WHERE parent = '" . mysql_real_escape_string($_GET['parent_id']) . "'");
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.
$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).
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í.
http://www.example.com/view.php?parent_id=0pošle (s příslušným escapováním)
http://www.example.com/view.php?parent_id=0;DELETE FROM catalogMí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/0pošle (s příslušným escapováním
http://www.example.com/view/0; DELETE FROM catalogJak psal nahoře Heron, nejlepší je použít prepared statements.
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.
' 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
$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'
.
Tiskni
Sdílej: