Valcha Posted November 26, 2004 Report Share Posted November 26, 2004 sveiki! esmu uztaisiijis komentaarus, esmu ielicis strip tags, lai nevareetu useris raxtiit html-aa komentus. bet dzirdeeju, ka veel ir taada lieta, ka ljaunpraatis var arii izpildiit sql komandas, rakstot komentaarus. kaa no taa pasargaaties? Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2004 Report Share Posted November 26, 2004 SQL injection parasti notiek tad, ja komentāros ievada pēdiņas. Piemēram tev ir jāievada leitotājvārds formā, un tu to salīdzini ar datubāzes ierakstiem: SELECT COUNT(*) FROM tabula WHERE user_name = '$username' Šajā gadījumā, ja tu speciāli neapstrādāsi $username mainīgo, un lietotājs tajā būs ielicis tekstu xxx' OR 1 -- tad skaties par ko būs pārvērties pieprasījums: SELECT COUNT(*) FROM tabula WHERE user_name = 'xxx' OR 1 --' Redzams, ka tiks selektēts jebkas, jo 1 nozīmē TRUE, tātad vienalga vai user_name lauks sakrīt ar to xxx vai nē. No tā var izvairīties diezgan vienkārši - lietojot funkciju - mysql_escape_string(), kura padoto string vērtību pārveidot tādā formā, ka šīs pēdiņas netraucēs pieprasījuma izpildi. Link to comment Share on other sites More sharing options...
рпр Posted November 26, 2004 Report Share Posted November 26, 2004 (edited) a ko noziimee tie miinusi "1--", bez miinusiem arii ir veelamais rezultaats... bet ja tu speciaali nestripo slashus, tad jau serveris pac pieliek tos slashus, vismaz apacis pieliek. Edited November 26, 2004 by рпр Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2004 Report Share Posted November 26, 2004 (edited) ... skat zemāk. Edited November 26, 2004 by bubu Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2004 Report Share Posted November 26, 2004 -- nozīmē komentāra sākumu, tas tāpēc, lai viss kas tālāk SQL kverijā, lai netiek ņemts vērā, jo nevar jau zināt, kas tur par brīnumiem :) Un šis jau tikai viens piemērs. To injection var veikt daudz veidos. PHP pats pieliek slešus tikai tad, ja ir eneiblētas magic quotes. Kuras neiesaka eneiblēt ātrdarbības dēļ. Citādi php jāiet visiem POST/GET datiem cauri un jāmeklē tās pēdiņas! Link to comment Share on other sites More sharing options...
Kaklz Posted November 26, 2004 Report Share Posted November 26, 2004 foreach ($_REQUEST as $key => $value){ $_REQUEST[$key] = mysql_escape_string($value); } Ar nosacījumu, ka caur $_REQUEST netiek padoti masīvi ;) Link to comment Share on other sites More sharing options...
рпр Posted November 26, 2004 Report Share Posted November 26, 2004 aa jaa komentaari ir taadu, veel var rakstiit # taa jau vairaak pienjemts; bet taadaa gadiijumaa magic quotes spaarda, jo ja uz servera ir vairaakas lapas, kuras tu neesi veidojis, tad no administratora viedoklja mieriigaaks praats. Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2004 Report Share Posted November 26, 2004 A padomā, ja tu to visu neliec iekš DB, bet glabā/izmanto kā citādi? Tad jau tas magic visus datus sačakarē, ja ievada pēdiņu, vai ne? Link to comment Share on other sites More sharing options...
рпр Posted November 26, 2004 Report Share Posted November 26, 2004 php.ini magic quotes nav eneiblotas, bet tik un taa ir slashi jau defaultaa, neliekot nemaz addslashes... Link to comment Share on other sites More sharing options...
bubu Posted November 26, 2004 Report Share Posted November 26, 2004 php.ini magic quotes nav eneiblotas, bet tik un taa ir slashi jau defaultaa, neliekot nemaz addslashes... un ko tev izvada šis? echo get_magic_quotes_gpc(); // 1-enabled, 0-disabled Link to comment Share on other sites More sharing options...
рпр Posted November 26, 2004 Report Share Posted November 26, 2004 A padomā, ja tu to visu neliec iekš DB, bet glabā/izmanto kā citādi? Tad jau tas magic visus datus sačakarē, ja ievada pēdiņu, vai ne? nu taadaa gadiijumaa tas ir atkariibaa no taa vai dati tiek vairaak saglabaati, kru vajag slashus vai nevajag. katraa gadiijumaa sanaak, ka vajag pielaagot serveri lai mazaak tiktu izmantots stripslashes vai addslashes. ja neglabaa db, tad arii var gadiities, ka vajag datiem slashus pievienot - saglabaa kaa php failu ar nodefineetiem mainiigajiem.. Link to comment Share on other sites More sharing options...
рпр Posted November 26, 2004 Report Share Posted November 26, 2004 php.ini magic quotes nav eneiblotas, bet tik un taa ir slashi jau defaultaa, neliekot nemaz addslashes... un ko tev izvada šis? echo get_magic_quotes_gpc(); // 1-enabled, 0-disabled magic_quotes_gpc Off Off magic_quotes_runtime Off Off magic_quotes_sybase Off Off Link to comment Share on other sites More sharing options...
Valcha Posted November 26, 2004 Author Report Share Posted November 26, 2004 Paldies par izsmeljoshajiem paskaidrojumiem, meegjinaashu pielietot. bet izsargaashanaas no sql injekcijaam ir obligaata? tb vai injekcijas iedarbosies jebkuraa lapaa? Link to comment Share on other sites More sharing options...
bubu Posted November 27, 2004 Report Share Posted November 27, 2004 Protams, ka obligāta! Tev patiktu, ja tagad es izpildītu tavā lapā SQL pieprasījumu DROP tabula; ?? :) Un SQL injekcijas noteikti strādās tādās lapās, kurās izmanta datubāze datu glabāšanai, bet nav piemērotas nekādas ievadīto lietotāja datu kontroles (piemēram uz šīm pēdiņām). Link to comment Share on other sites More sharing options...
Recommended Posts