Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Magic Quotes pois käytöstä

Metabolix [10.04.2011 20:16:59]

#

PHP:n vanhoissa versioissa (5.3 ja aiemmat) on haitallinen ominaisuus nimeltä Magic Quotes: käyttäjien lähettämiin teksteihin ilmestyy ylimääräisiä \-merkkejä, joiden tarkoitus on parantaa tietoturvaa estämällä SQL-injektioita mutta jotka eivät itse asiassa ole millään tavalla riittäviä tähän. Ominaisuus kannattaakin poistaa käytöstä PHP:n asetuksista kohdasta magic_quotes_gpc. Jos PHP:n asetuksia ei pääse muuttamaan, voi käyttää sivun alussa seuraavaa koodia:

if (ini_get("magic_quotes_runtime")) {
	ini_set("magic_quotes_runtime", 0);
}
if (!function_exists("undoMagicQuotes") && ini_get("magic_quotes_gpc")) {
	ini_set("magic_quotes_gpc", 0);
	function undoMagicQuotes($array, $topLevel = true) {
		$newArray = array();
		foreach ($array as $key => $value) {
			if (!$topLevel) {
				$key = stripslashes($key);
			}
			if (is_array($value)) {
				$newArray[$key] = undoMagicQuotes($value, false);
			} else {
				$newArray[$key] = stripslashes($value);
			}
		}
		return $newArray;
	}
	if (!empty($_GET)) $_GET = undoMagicQuotes($_GET);
	if (!empty($_POST)) $_POST = undoMagicQuotes($_POST);
	if (!empty($_COOKIE)) $_COOKIE = undoMagicQuotes($_COOKIE);
	if (!empty($_REQUEST)) $_REQUEST = undoMagicQuotes($_REQUEST);
}

Koodi perustuu PHP:n manuaalissa esiteltyyn versioon mutta käyttää silmukan sijaan rekursiota ja sijaitsee funktiossa.

Nykyisissä PHP:n versioissa (5.4 ja uudemmat) ongelmaa ei enää ole lainkaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta