Navigace se soukromím CoMaps postavena nad OpenStreetMap je nově k dispozici v Google Play, App Store i F-Droid. Jedná se o komunitní fork aplikace Organic Maps.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.49.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek i s náhledy obrazovek v oznámení o vydání.
Masivní výpadek elektrického proudu zasáhl velkou část České republiky. Hasiči vyjížděli k většímu počtu lidí uvězněných ve výtazích. Výpadek se týkal zejména severozápadu republiky, dotkl se také Prahy, Středočeského nebo Královéhradeckého kraje. Ochromen byl provoz pražské MHD, linky metra se už podařilo obnovit. Výpadek proudu postihl osm rozvoden přenosové soustavy, pět z nich je nyní opět v provozu. Příčina problémů je však stále neznámá. Po 16. hodině zasedne Ústřední krizový štáb.
Po více než roce vývoje od vydání verze 5.40 byla vydána nová stabilní verze 5.42 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 64 vývojářů. Změněno bylo přibližně 280 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.
Byla vydána nová stabilní verze 7.5 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 138. Přehled novinek i s náhledy v příspěvku na blogu.
Sniffnet je multiplatformní aplikace pro sledování internetového provozu. Ke stažení pro Windows, macOS i Linux. Jedná se o open source software. Zdrojové kódy v programovacím jazyce Rust jsou k dispozici na GitHubu. Vývoj je finančně podporován NLnet Foundation.
Byl vydán Debian Installer Trixie RC 2, tj. druhá RC verze instalátoru Debianu 13 s kódovým názvem Trixie.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za červen (YouTube).
Libreboot (Wikipedie) – svobodný firmware nahrazující proprietární BIOSy, distribuce Corebootu s pravidly pro proprietární bloby – byl vydán ve verzi 25.06 "Luminous Lemon". Přidána byla podpora desek Acer Q45T-AM a Dell Precision T1700 SFF a MT. Současně byl ve verzi 25.06 "Onerous Olive" vydán také Canoeboot, tj. fork Librebootu s ještě přísnějšími pravidly.
Licence GNU GPLv3 o víkendu oslavila 18 let. Oficiálně vyšla 29. června 2007. Při té příležitosti Richard E. Fontana a Bradley M. Kuhn restartovali, oživili a znovu spustili projekt Copyleft-Next s cílem prodiskutovat a navrhnout novou licenci.
Ř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: