Názory ke článku SQL Injection a zabezpečení – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku SQL Injection a zabezpečení – Programujte.comNázory ke článku SQL Injection a zabezpečení – Programujte.com

 

Názory ke článku SQL Injection a zabezpečení

Krutas57   NOVÝ
23. 4. 2007

Prima článek, už vim co ten SQL injection je. :)
Zrovna se mi to hodí, takže díky za stručnej a poučnej článek.

thor   NOVÝ
23. 4. 2007

http://www.security-portal.cz/clanky/sql-injection.html
http://www.security-portal.cz/clanky/sql-injection-v-praxi.html

Smokie   NOVÝ
23. 4. 2007

Myslel som, ze SQL injection sa da osetrit vhodnym parsovanim vstupnych udajov, ale aj toto je dobre vediet :) Dik

benghi   NOVÝ
23. 4. 2007

Uvedený příklad nemůže fungovat ani teoreticky, natož prakticky. Autor by si za domácí úkol mohl zjistit proč.

Onen ,,nebezpečný náchylný dotaz'' je skutečne nebezpečný, ale útok je nutno vést zcela lstivě naprosto jiným způsobem.

Dohnto   NOVÝ
23. 4. 2007

Mne by zase zajímalo proč v kódu

$dotaz = "select * from clanky where id='$id'";

kde id je typu integer je proměná id v apostrofech! Vždyť v apostrofech bývají řetězce...

raist   NOVÝ
24. 4. 2007

Napadlo me v rychlosti jedno obecne reseni, ktere vyresi vsechny prichozi promenne najednou. Staci pridat na zacatek vasich scriptu nasledujici dva radky kodu :

foreach ($_GET as $key => $value) { $_GET["$key"]=str_replace(" ","",$_GET["$key"]); }
extract($_GET);

S tim, ze zmena obsahu promenych v { } je obecne reseni (kdy predpokladam, ze do SQL dotazu nedavam promenou s mezerou),
a dalo by se rozsirit prave o testovani IsNumeric, apod.

raist   NOVÝ
24. 4. 2007

ofcourse jde o reseni v PHP, a s tim, ze utocnikuv dotaz to znehodnoti a sql dotaz vypise chybu. Je to jen cesta jak by to slo osetrit v jiz existujicich projektech docela jednoduse.
Popr. nevidi to nekdo jinak, nejaky zadrhel?

uzivatel   NOVÝ
25. 4. 2007

Pretoze to bude fungovat a osetrujes tym jeden z najtazsich SQL injectov. Ak je vyraz v apostrofoch tak ti nikto nemoze UNIONovat tabulku alebo vytvorit pravdivostnu podmienku. Uz chapes ?

Dohnto   NOVÝ
25. 4. 2007

No jenže je přece blbost aby sem to takhle "přetypoval". To je chyba mysql a podobných že tohle projde.

D1ce   NOVÝ
26. 4. 2007

Nebudu se rozepisovat, ale následující zdrojáky jsou IMHO použitelnější a bezpečnější:
Zapnutí register_globals programově:



if(!ini_get('register_globals')) {
$sequence = eval('return array('.strtr(ini_get('variables_order'), array('E' => '&$_ENV, ', 'G' => '&$_GET, ', 'P' => '&$_POST, ', 'C' => '&$_COOKIE, ', 'S' => '&$_SERVER, ', 'R' => '&$_REQUEST, ', 'F' => '&$_FILES, ')).');');
foreach($sequence as $value) {
//We can not use extract() because
//it does not do what we exactly need (hint: ${'some_terrible[variable'}; )
foreach ($value as $k => $v) {
if($k == 'GLOBALS') {
continue;
}
$$k = $v;
}
}
unset($sequence);
}

Zapnuté magic quotes programově(Zdroj: http://php.vrana.cz)


if(!get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST, &$_FILES);
while(list($key, $val) = each($process)) {
foreach($val as $k => $v) {
unset($process[$key][$k]);
if(is_array($v)) {
$process[$key][($key < 5 ? $k : addslashes($k))] = $v;
$process[] =& $process[$key][($key < 5 ? $k : addslashes($k))];
}
else {
$process[$key][addslashes($k)] = addslashes($v);
}
}
}
}


PS. OT Co se to poslední dobou s Programujte děje? Nechtěl bych být považován za kverulanta, ale kvalita článků jde dolu, periodičnost vydávání článků se mi nelíbí, novinky jsou chudé a není to web 2.0 . :D Zkrátka by to chtělo "zapracovat" na obsahu. (Beru na vědomí: Autoři pracují dobrovolně a skoro zadara, finační prostředky projektu asi nebudou závratné, Cura a spol. má moc práce a já, že bych posunul hranice svých vědomostí dál :) )

Smokie   NOVÝ
26. 4. 2007

Ale ked ti to niekto nabura cez toto tak povies co? Ze to bola chyba SQL a nie tvoja? :)

Dohnto   NOVÝ
26. 4. 2007

Napíšu to tak, aby se tam nenaboural ;)



$id = (int)$id; // $id = $id + 0;
$dotaz = "select * from clanky where id=$id";


Tohle by snad mohlo jít.

DavesMan   NOVÝ
27. 4. 2007

Pěkná kravina - to vůbec není pravda!

Jan Tichý   NOVÝ
11. 5. 2007

Ach jo, zase jeden článek o SQL Injection, který ukazuje spoustu blbostí, místo aby seriózně poradil.

if (!is_string($_GET["id"])): 



A co se stane, když $_GET['id'] nebude vůbec definované? Vyhodí mi to notice. A když bude definované, tak je tahle podmínka zcela zbytečná, protože vstupní parametry jsou vždycky string.

$id = mysql_real_escape_string($_GET["id"]);



Hmm, a co když budou zapnuté magic_quotes_gpc? Když už psát články a ukázky, tak pořádně, neboli toto ošetřit například pomocí best-practice uváděné v PHP manuálu u funkce mysql_real_escape_string.

$dotaz = "select * from clanky where id='$id'";



Integer do uvozovek? Ale fuj. Že to náhodou v MySQL funguje, je spíš jeho chyba :), rozhodně jiné databáze vás s tím vypráskají. Tohle je fakt ochrana jako vrata...

if (!is_numeric($id)): 

echo "Toto ne!";
else:
$dotaz = "select * from clanky where id='$id'";
endif;



A tenhle kód pokračuje jak? Následuje třeba něco jako mysql_query($dotaz)? Že by bezpečnostní díra jako prase?

echo112   NOVÝ
10. 7. 2007

Dobrý článok!
Hoci mne nepomohol zabezpečiť webové aplikácie a už vôbec mi nepomohol pochopiť zmysel SQL, ale zato som si vďaka tomuto článku všimol deravosť fóra na týchto stránkach a tiež som si istý, že vďaka tomuto článku už nebudem v každej stránke vidieť takú dokonalosť ako predtým.

sibep   NOVÝ
3. 10. 2008

Používám takovouhle kontrolu, doufám, že mne za to nezastřelíte - holt jsem samouk :(
Za případné rady budu rád :)




if( ctype_digit($_GET["id"]) AND isset($_GET["id"]) ){

"... WHERE id ".intval($_GET["id"])." ... ";

} else {
// přesmerování na systémové hlášení
}

mmm   NOVÝ
24. 12. 2008

$id = intval($id);
$sql = mysql_query("select nazev from clanky where id='".$_GET['id']."'");
$nazev = mysql_result($sql, 0);
echo "$nazev";

co tohle?

flubooo   NOVÝ
1. 10. 2010

Zdravím, pre všetkých SQLi nadšencov je tu Cheese Holes blog pre trénovanie Vašich zručností. Prvotné info je na webe h4f http://www.hack4fun.eu/2010/09/sqli-technika-a-prevencia/, kde nájtete aj linky na obe verzie Cheese. Enjoy

Karel   NOVÝ
5. 5. 2024

Dnes v r. 2024 jako ochrana proti SQL injekci již jen parametrizované dotazy.
Viz: https://zmsoft.cz/?str=parametrizovane-sql-dotazy-v-php-rozhran

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý