daviskrex Posted August 13, 2007 Report Share Posted August 13, 2007 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. Link to comment Share on other sites More sharing options...
hackerman Posted August 13, 2007 Report Share Posted August 13, 2007 htmlspecialchars Link to comment Share on other sites More sharing options...
daviskrex Posted August 13, 2007 Author Report Share Posted August 13, 2007 paldies, pamēģināšu. Link to comment Share on other sites More sharing options...
andrisp Posted August 13, 2007 Report Share Posted August 13, 2007 (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 August 13, 2007 by andrisp Link to comment Share on other sites More sharing options...
hackerman Posted August 13, 2007 Report Share Posted August 13, 2007 andrisp, $email = htmlspecialchars($_POST['email'], ENT_QUOTES); - iestūķē injekciju. Link to comment Share on other sites More sharing options...
andrisp Posted August 13, 2007 Report Share Posted August 13, 2007 Nesapratu ? Link to comment Share on other sites More sharing options...
hackerman Posted August 13, 2007 Report Share Posted August 13, 2007 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 ? Link to comment Share on other sites More sharing options...
andrisp Posted August 13, 2007 Report Share Posted August 13, 2007 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ē. Link to comment Share on other sites More sharing options...
hackerman Posted August 13, 2007 Report Share Posted August 13, 2007 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... :) Link to comment Share on other sites More sharing options...
andrisp Posted August 13, 2007 Report Share Posted August 13, 2007 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 ? Link to comment Share on other sites More sharing options...
tmpjail Posted August 13, 2007 Report Share Posted August 13, 2007 damn, pie insertoshanas db - mysql_real_escape_string, pie outputoshanas - vismaz stripslashes un htmlspecialchars protams, magic quotes meedz maisiit Link to comment Share on other sites More sharing options...
andrisp Posted August 13, 2007 Report Share Posted August 13, 2007 Kāpēc stripslashes ? Link to comment Share on other sites More sharing options...
bubu Posted August 13, 2007 Report Share Posted August 13, 2007 Tāpēc, ka magic_quotes ir on droši vien. Link to comment Share on other sites More sharing options...
Recommended Posts