daGrevis Posted April 15, 2010 Report Share Posted April 15, 2010 Sveiki, Problēma: Ielogojoties saitā, piemēram, ja mani dati ir... uname: 'daGrevis' pass: '123456' ...varu ielogoties arī ar paroli ' 123456' vai '123456 '... :D Tas pats attiecās uz uname. :D Tā, škiet, nevajadzētu būt! Kā novērst? Quote Link to comment Share on other sites More sharing options...
bubu Posted April 15, 2010 Report Share Posted April 15, 2010 Droši vien pie datu apstrādes tiek pielietota trim funkcija POST datiem (vai arī kāda cita, analoģiska fja). Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 15, 2010 Author Report Share Posted April 15, 2010 (edited) $data = trim(htmlEntities(strip_tags($data))); Nav kāda iespēja to labot?? (blush) Tas ir izveidot tā, ka strādā gan drošības "fix's", gan nestrādā ielogošanās ar ' '! :) Edited April 15, 2010 by daGrevis Quote Link to comment Share on other sites More sharing options...
Леший Posted April 15, 2010 Report Share Posted April 15, 2010 Vari uztaisīt pre-check ar JS. Ja ir atstarpes sākumā/beigās, tad metīs error. JS trim'ošanai izmantoju šo: http://www.somacon.com/p355.php Quote Link to comment Share on other sites More sharing options...
yeahz Posted April 15, 2010 Report Share Posted April 15, 2010 // replace spaces and tabs with nothing function is_empty($value) { $value = preg_replace('/^[ \t]+/', '', $value); return empty($value); } Quote Link to comment Share on other sites More sharing options...
php newbie Posted April 15, 2010 Report Share Posted April 15, 2010 kad selektē useri no db, input laukiem izmanto mysql_real_escape_string() un JS pārbaudes ir tikai smukumam, vienalga visas pārbaudes vajag iekš php taisīt Quote Link to comment Share on other sites More sharing options...
php newbie Posted April 15, 2010 Report Share Posted April 15, 2010 ļoti elementāri: Glabājot DB, lielkam mysql_real_escape_string visam, kas ir teksts, (int) visam, kas ir cipari. Izvadot no DB, liekam sekojoši: - ja tas ir useru kontents (komentāri utt), tad liekam <?php echo nl2br(htmlspecialchars($kautkas)) ?> - ja tas ir admin kontrolēts saturs, piemēram, raksts, kas taisīts ar tinymce, tad nevajag htmlspecialchars - html cleanupu vajag taisīt tad, ja saturu pievieno lietotāji, kuriem ir ļauts pievienot tikai dažus html tegus.. es neredzu jēgu no inputa filtrēšanas pirms ievietošanas datubāzē triviālos gadījumos. pēc augstākminētā visi draudi ir novērsti ar to, ka ievadot datubāzē, notiek DB eskeipošana (lai izvairītos no sql injekcijas), un izvadot - HTML eskeipošana (lai novērstu HTML injekciju, XSS un tamlīdzīgi - visi html tegi parādīsies kā teksts, bez interpretācijas). vo tomēr atradu. īsi un skaidri teikts. varētu šito papildināt un kaut kur ielikt kā sticky Quote Link to comment Share on other sites More sharing options...
bubu Posted April 15, 2010 Report Share Posted April 15, 2010 Tas ir izveidot tā, ka strādā gan drošības "fix's", gan nestrādā ielogošanās ar ' '! :) htmlEntities nav nekāda aizsardzība pret ielogošanos ar ' '. Trim vispār vajag lietot tik kautkādai tekstuālai informācijai (piemēram bloga ierakstam), kurai nav svarīgas atstarpes sākumā/beigās. logošanās informācijai tas ir svarīgi, tāpēc nevajag lietot nekādu trim, nekādu htmlEntities, un nekādu strip_tags. Vajag lietot tikai sql eskeipošanu (mysql_escape_string), ja tas tiek padots datubāzei. Un viss. Un Javaskriptam ar šo problēmu nav itin nekāda sakara. Pilnīgi nevajadzīgs JS pielietojums. Quote Link to comment Share on other sites More sharing options...
EdgarsK Posted April 15, 2010 Report Share Posted April 15, 2010 (edited) luuk mans login validejamais riix # Login authorization function authorize(){ $username = sql($_POST['ot_username']); $password = sql($_POST['ot_password']); } function sql($str,$type=1){ $str = str_replace(($type==1?"'":'"'),($type==1?'`':'"'),$str); return $str; } man viss smuki shance :) tobish beznekadiem entiitjiem :) es to pashu eskeiposhanu veicu vnk man ir katra projekta bik savadakass prasibas tapec tads .. kods Edited April 15, 2010 by EdgarsA Quote Link to comment Share on other sites More sharing options...
briedis Posted April 15, 2010 Report Share Posted April 15, 2010 Kaut kā nemanam mysql_real_escape_string... Nesaprotu tās sql funkcijas FUNKCIJU... Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 15, 2010 Author Report Share Posted April 15, 2010 Nu es biju izveidojis šādu funkciju... function filter($data) { $data = trim(htmlEntities(strip_tags($data))); if(get_magic_quotes_gpc()) { $data = stripSlashes($data); } $data = mysql_real_escape_string($data); return $data; } // By daGrevis. ...pēc tam attiecīgi... $username = filter($_POST['username']); Quote Link to comment Share on other sites More sharing options...
nemakuphp Posted April 16, 2010 Report Share Posted April 16, 2010 Šo savu funkciju vari lietot pie datu izvades. Tavā gadījumā priekš ielogošanās pietiks ar mysql_real_escape_string($_POST['niks']); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.