Vecteevs Posted August 1, 2010 Report Share Posted August 1, 2010 Sveiki, varat pastāstīt variantus lai pasargātu datubāzi? nu piemēram kad nosūta vērtības jāliek real escape string, kas vēl būtu jādara? Quote Link to comment Share on other sites More sharing options...
briedis Posted August 1, 2010 Report Share Posted August 1, 2010 Vienmēr jāliek, ja vien tu neesi 100% drošs par to saturu. par to 100% drošību, piemēram $a = (int)$_POST['blabla'], $a ir 100% drošs mainīgais, jo viņš vienmēr būs skaitlis. Visi mainīgie, kas ir string tipa, noteikti ir jā-eskeipo ar mysql_real_escape_string(). Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 1, 2010 Author Report Share Posted August 1, 2010 skaidrs, un kā būs ar sesijas drošību? Kam visvairāk ir jāpievērš uzmanība? Quote Link to comment Share on other sites More sharing options...
briedis Posted August 1, 2010 Report Share Posted August 1, 2010 Sesijai vari piekļūt tikai tu pats, ko tur saglabāsi, tas tur arī būs. Vienīgi, sesijas var nozagt, konkrētāk, ja tev lapā ir kāds xss caurums, tad ļaundaris var ievietot tur kādu ļaunu js kodu, kas nozog lietotājiem sesijas identifikatoru, kas glabājas sīkdatnē. (PHPSESSID parasti). Vēlāk viņš šo sīkdatni var izmantot, un uzdoties kā apzagtais lietotājs (piemēram, administrators). Lai no tā izvairītos, sesiju var piesaistīt, teiksim, lietotāja IP (nav labs variants, ja lietotājam mainās IP regulāri (wifi, dinamiskā IP)), vai pārlūka versijai (USER_AGENT). Šos identificējošos datus saglabā sesijā un katru reizi nočeko, vai viņi sakrīt ar reālajiem - ja nesakrīt, sesija ir zagta - unset($_SESSION). Quote Link to comment Share on other sites More sharing options...
Леший Posted August 2, 2010 Report Share Posted August 2, 2010 Briedi, par sesijam, manliekas, tev nav taisnība. Faktiski, sesijas stāv failos serverī, un, ja servera adminam līkas rokas, ļaundaris var tikt pie datu rediģēšanas. Tomēr, labākais stils ir eskeipot visu, pat variable nosaukumus. Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 2, 2010 Report Share Posted August 2, 2010 Briedim šoreiz ir taisnība, runa iet nevis par pieeju pašiem sesijas datiem, bet gan sesijas identifikatora nozagšanu, sīkāk googlē: cookie stealing vai kaut kā līdzīgi. Quote Link to comment Share on other sites More sharing options...
indoom Posted August 2, 2010 Report Share Posted August 2, 2010 sesijas failiem uz servera var tikt klāt un redzēt pats adminis. Nav jābūt līkām rokām, pietiks ar "ļauno admini". :) Quote Link to comment Share on other sites More sharing options...
briedis Posted August 2, 2010 Report Share Posted August 2, 2010 Briedi, par sesijam, manliekas, tev nav taisnība. Faktiski, sesijas stāv failos serverī, un, ja servera adminam līkas rokas, ļaundaris var tikt pie datu rediģēšanas. Tomēr, labākais stils ir eskeipot visu, pat variable nosaukumus. Nu es šo variantu nemaz nepieminēju, jo tas ir "augstāks spēks", risks, kas pastāv vienmēr, un, cik maz zināms, koderis pret to nemaz nevar cīnīties :) Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 2, 2010 Author Report Share Posted August 2, 2010 Tad šis būtu drošs veids? <?php session_start(); ?> <?php if (!isset($_SESSION['lietotajs'])) { die ("Access Denied, Please Login!"); }?> Quote Link to comment Share on other sites More sharing options...
Леший Posted August 2, 2010 Report Share Posted August 2, 2010 (edited) Nē, jebkurā gadījumā, vajag pārbaudīt autorizāciju. Edited August 2, 2010 by Леший Quote Link to comment Share on other sites More sharing options...
bubu Posted August 2, 2010 Report Share Posted August 2, 2010 Reku par sesiju fiksāciju: http://laacz.lv/2005/02/16/php_session_fixation/ Quote Link to comment Share on other sites More sharing options...
briedis Posted August 2, 2010 Report Share Posted August 2, 2010 (edited) Reku par sesiju fiksāciju: http://laacz.lv/2005/02/16/php_session_fixation/ Viņam tur tajā paraugā sesija ir piesaistīta arī IP adresei :( Bet principā realizācija vienkārša un saprotama, pats tā daru :) Edited August 2, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 2, 2010 Author Report Share Posted August 2, 2010 skatoties pēc šī koda <?php # Returns session variable $idx or $default, if not found function getsvar($idx, $default = false) { global $_SESSION; #print_r($_SESSION[$idx]); return isset($_SESSION[$idx]) ? $_SESSION[$idx] : $default; } # Sets session variable $idx to value $value function setsvar($idx, $value) { global $_SESSION; $_SESSION[$idx] = $value; } sapratu ka $idx ir tas lietotāja id? bet kas ir domāts $default? Quote Link to comment Share on other sites More sharing options...
Леший Posted August 2, 2010 Report Share Posted August 2, 2010 Ja nav norādīts, tad false. Tu vari izsaukt gan getsvar('Login'), gan getsvar('Login', 'guest'). Quote Link to comment Share on other sites More sharing options...
Vecteevs Posted August 2, 2010 Author Report Share Posted August 2, 2010 hmm, izdariju šādi, bet nezinu vai būs pareizi http://paste.php.lv/44527e55784802227b46ca085fb15b28?lang=php 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.