Jump to content
php.lv forumi

Recommended Posts

Posted

Esmu dzirdējis, ka visas sql injekcijas veic email laukos, bet es nevaru izdomāt kādu aizsardzību uzliek, jo būtu žēl, ja kāds uzlauž manu lapeli.

Posted (edited)

hackerman, htmlspecialchars dara pavisam ko citu. Tā pasargā (lielākoties) no XSS (visādu sliktumu injecēšanu iekš HTML) nevis no SQL injekcijām. Tam ir mysql_real_escape_string vai citām DBVS kaut kas analogs.

Edited by andrisp
Posted
hackerman, htmlspecialchars dara pavisam ko citu. Tā pasargā (lielākoties) no XSS (visādu sliktumu injecēšanu iekš HTML) nevis no SQL injekcijām.

 

Nu pieņemsim ir input lauks, post dati tiek ievietoti datubazē, rezultāts izprintēts. Post dati tiek filtrēti ar htmlspecialchars();

( $email = htmlspecialchars($_POST['email'], ENT_QUOTES); )

Tu teici, ka htmlscpecialchars neaizsargā no injekcijām... Tad jau tev nesagādās uztaisīt sql injekciju ?

Posted

Sapratu, ko tu gribēji man pateikt, bet nu šāds risinājums ir galīgi garām (un pavisam noteikti nav 100% drošs. Īpaši SQL injekcijas nepārzinu, bet esmu pārliecināts, ka pastāv injekciju veidi bez ' un "). Garām tāpēc, ka htmlspecialchars pirmkārt un galvenokārt nav paredzēta šādam nolūkam. Tam ir speciālas funkcijas, kas eskeipo netikai ' un ", bet arī citus jūtīgos simbolus. Kā arī - ja man vajadzēs šos datus neeskeipotus ? Katru reizi vajadzēs izmantot htmlspecialchars_decode() vai ko tamlīdzīgu ? Nerullē.

Posted

Es arī nēesmu eksperts sql injekcijās, bet kautko zinu... Piemēram login loga injekcijas piemēri:

' or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a

 

itkā visos bija pēdiņa(s). Nēesmu nekad taisījis drop table injekcijas. Reku piemērs:

SELECT email, passwd, login_id, full_name
 FROM members
WHERE email = 'x'; DROP TABLE members; --';  -- Boom!

Atkal itkā ir pēdiņas :) Nu okei, nestrīdēšos tev pretīm, ticēšu, ka drošāk ir ar mysql_real_escape_string :)

Par vajadzību pēc eskeipotiem/neeskeipotiem datiem - skatoties, ko vajag :) Nedomāju, ka emaila adresē būtu jāmētājas neeskeipotām pēdiņām, bet citur, kautkur komentāros, rakstos etc., eskeipošana pat traucētu... :)

Posted
emaila adresē būtu jāmētājas neeskeipotām pēdiņām
Email adrese vispār būtu jāvalidē, ka ' " un nav iespējami ;)

 

kautkur komentāros, rakstos etc., eskeipošana pat traucētu... :)
Kādā ziņā traucētu ?

 

Un atkal par tām pēdiņām - protams, ka lielākā daļa injekciju izmanto tās, bet tev neliekas loģiski, ka, piem., fjai mysql_real_escape_string() dokumentācijā ir rakstīts, ka tā eskeipo \x00, \n, \r, \, ', " un \x1a, un, ka tas nozīmē, ka īpašos apstākļos varbūt ir iespējams SQL injekcijas (vai arī vienkārši sačakarēt kveriju), izmantojot kādu no tiem pārējiem simboliem ?

Posted

damn, pie insertoshanas db - mysql_real_escape_string, pie outputoshanas - vismaz stripslashes un htmlspecialchars

protams, magic quotes meedz maisiit

×
×
  • Create New...