Jump to content
php.lv forumi

Vai strādās šāda aizsardzība!


Wuu

Recommended Posts

<?php
function returnSafe($data) {
	$data = trim($data);
	$data = htmlspecialchars($data);
	$data = mysql_real_escape_string($data);
	return $data;
}
foreach ($_GET as &$value) {
  	 	$value = returnSafe($value);
}
foreach ($_POST as &$value) {
  	 	$value = returnSafe($value);
}
?>

 

Doma ir palaist šādu scriptu pirms lapas ielādes un pirms visām citām php fīčām lai nav katru reizi pa jaunu jāraksta pie katra scripta ! Vārbūt kaut ko vel var papildināt?

Edited by Wuu
Link to comment
Share on other sites

Nē, tas nebūs labi.

Ja dati domāti ievietošanai DB, tad tu nepārbaudi vai tu neievietosi skaitļu kolonnās neskaitliskus datus - būs kļūda kverijā.

Bet ja dati domāti ne tikai ievadīšanai DB (piemēram izvadīšanai turpat HTML'ā vai sūtīšanai pa e-pastu, vai rakstīšanai failā, utt..) tad tu lieki eskeipo pēdiņas/apostrofus. To tad nevajag darīt.

Link to comment
Share on other sites

vari izveidot vēl kāt vienu fciju

Visiem datiem vajag novākt tukšmus sākumā un beigās

	function returnSafe($data) {
	$data = trim($data);
	$data = htmlspecialchars($data);
	return $data;
}

 

ja datus vajadzēs likt db, tad vēl arī šo palaiž

	function returnSafeDB($data,$tips = 1) {
	if (tips == 1) {//teksts
	$data = mysql_real_escape_string($data);
	} else {
	//te var salikt veel kaut ko ja gribas 
	//paarbaudaam vai cipars ir valīds 
	}
	return $data;
}

 

	foreach ($_GET as &$value) {
		$value = returnSafe($value);
}
foreach ($_POST as &$value) {
		$value = returnSafe($value);
}

 

ja kko vajag likt db tad to mainiigo izlaizh caur returnSafeDB

Link to comment
Share on other sites

Man neliekas gudri likt oriģinālam getam un postam virsū funkciju.

Labāk ielikt mainīgajā, piem.,

$get = array_map('returnSafe',$_GET);

vai

$post = array_map('returnSafe',$_POST);

 

Kā arī, kad liek mysql_real_escape_string, tad nepieciešams pārbaudīt vai nav magic quotes un iztīrīt tās, lai nesanāk noslešot dubultā

Piemēram:

function returnSafe($data, $trim=true) {
if ($trim) $data = trim(data);
return !is_numeric($data) ? mysql_real_escape_string(get_magic_quotes_gpc() ? stripslashes($data) : $data) : $data);
}

 

htmlspecialchars labāk likt, kad teksts tiek atgriezts no datubāzes, kad nepieciešams. Arī mazāk vietas aizņems datubāzē, kā arī netiek sabojāts oriģināls.

Edited by indoom
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...