Jump to content
php.lv forumi

Simols 'space' tiek ignorēts. :)


daGrevis

Recommended Posts

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?

Link to comment
Share on other sites

$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 by daGrevis
Link to comment
Share on other sites

ļ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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by EdgarsA
Link to comment
Share on other sites

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']);

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...