Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Apsauga nuo SQL Injection

Parašė Donatis07· 2012 Kov. 19 21:03:49
#1

Sveiki, gal galit kas nors patarti, kaip apsaugoti kuriamą projektą nuo sql injection? Naudoju perdarytą PHP-Fusion v6, ten labai mažai kas likę pačio fusiono - tik pats pagrindas, beveik viską darau pats (kuriuosi modus).

Parašė Faitas.· 2012 Kov. 19 21:03:20
#2

Aš du paskutinius projektus užsakovams dariau rūpindamasis šiuo klausimu, tai sugalvojau keletą idėjų kaip nuo to apsisaugoti.

Pirmoji idėja yra tikrinti ar yra tekste neleistinų simbolių su savo parašyta funkcija (nežinau kaip kitiems, bet man mysql_real_escape_string()) nelabai patinka vien dėlto, kad jei nori naudoti, tai ištraukia visus neleistinus. O man reikėjo ir etos (@) kai kuriose vietoje neleisti ir pnš, todėl pasirašiau gan paprastą, bet efektyvią funkciją (yra dvi versijos, viena ištraukia simbolius, kita tik tikrina ir gražina TRUE/FALSE, na čia priklauso nuo situacijos).

Jei domina, galėčiau į PM atsiųsti kodą, viešai nedalinsiu. :)

Parašė Jaunelis· 2012 Kov. 19 23:03:26
#3

man ir įdomu būtų šiuo klausimu :)

Parašė ErikasR· 2012 Bal. 4 10:04:22
#4

Manau net neapsimoka apsaugoti svetainių, nes tai bereikšmis dalykas. Taip gal sulaikys kelis SQL injekcijas, bet tas neišgelbės nieko. :) čia tik mano nuomonė...

Parašė SkyH· 2012 Bal. 4 11:04:03
#5

ErikasR parašė:
Manau net neapsimoka apsaugoti svetainių, nes tai bereikšmis dalykas. Taip gal sulaikys kelis SQL injekcijas, bet tas neišgelbės nieko. :) čia tik mano nuomonė...

Jau geriau minimaliai apsisaugot, kad skriptavaikiai nenulaužinėtų, o rimtesni "Hakeriai" nemanau, kad lys jai nepykdisi.

Parašė weberiz· 2012 Bal. 4 12:04:02
#6


// Validate numeric input
function isnum($value) {
	if (!is_array($value)) {
		return (preg_match("/^[0-9]+$/", $value));
	} else {
		return false;
	}
}
// Strip Input Function, prevents <span style="border-bottom: 1px dotted black;">HTML</span> in unwanted places
function stripinput($text) {
	if (!is_array($text)) {
		$text = stripslash(trim($text));
		//$text = preg_replace("/&[^#0-9]/", "&amp;", $text)
		$search = array("&", "\"", "'", "\\", '\"', "\'", "<", ">", "&nbsp;");
		$replace = array("&amp;", "&quot;", "'", "\", "&quot;", "'", "&lt;", "&gt;", " ");
		$text = preg_replace("/(&amp;)+(?=\#([0-9]{2,3});)/i", "&", str_replace($search, $replace, $text));
	} else {
		foreach ($text as $key => $value) {
			$text[$key] = stripinput($value);
		}
	}
	return $text;
}
 
// Prevent any possible XSS attacks via $_GET.
function stripget($check_url) {
	$return = false;
	if (is_array($check_url)) {
		foreach ($check_url as $value) {
			if (stripget($value) == true) { 
				return true;
			}
		}
	} else {
		$check_url = str_replace(array("\"", "\'"), array("", ""), urldecode($check_url));
		if (preg_match("/<[^<>]+>/i", $check_url)) { 
			return true;
		}
	}
	return $return;
}

viskas apsaugotas tik naudok šias funkcijas

Parašė Agurkėlis· 2012 Bal. 22 15:04:22
#7

Kaip apsisaugoti? Labai paprastai - labai griežtai filtruok visą vartotojo informaciją ir apgalvok visus vartotojo veiksmus tavo WEB aplikacijoje.

Redagavo Agurkėlis· 2012 Bal. 22 15:04:49