Sicheres Eingeben von Daten in die MySQL-DB

Moritz123

Erfahrenes Mitglied
Hallo!

ich möchte gerne Daten in meine Datenbank schreiben. Dies soll aber möglichst "sicher" sein, so dass sich das Script aber nicht "aufhängt" wenn Sonderzeichen im Text stehen.
Ich verwende derzeit mysql_escape_string zum maskieren. Allerdings maskiert er mir das ' mit drei Backslashes, die ich nicht wegbekomme. Nun meine Frage, gibt es eine andere Möglichkeit, die Eingaben sicher zu machen, ohne drei Backslashes zu bekommen?

Vielen Dank!
 
Eigentlich sollte mysql_escape_string nur die Zeichen mit einem Backslash maskieren. Ist vielleicht magic_quotes_gpc auf on?
 
Dann wirst du wohl stripslashes() bemühen müssen, da mit magic_qotes alle ' bereits mit \ maskiert wurden. mysql_escape_string maskiert dann den Backslash UND den Singlequote
=> Drei \ und ein ' :p
z.B.:
PHP:
$string=mysql_escape_string(stripslashes($string));
 
Ok - hab ich gemacht. Dh aber, dass ich bei der Ausgabe aus der DB auch wieder stripslashes() anwenden muss, oder? Ist die Eingabe jetzt "sicher" vor "Abstürzen" ?
 
Formatiere lieber sämtliche von außen kommende Werte anstatt sie einzeln zu formatieren:
PHP:
<?php

	function strip_magic_quotes( &$var )
	{
		$self = __FUNCTION__;
		if( is_array($var) ) {
			foreach( $var as $key => $value ) {
				$var[$key] = $self($var);
			}
		}
		if( is_string($var) ) {
			$var = stripslashes($var);
		}
		return $var;
	}

	if( (bool) ini_get('magic_quotes_gpc') === true ) {
		array_walk($_GET,    'strip_magic_quotes');
		array_walk($_POST,   'strip_magic_quotes');
		array_walk($_COOKIE, 'strip_magic_quotes');
	}

?>
Alternativ kannst du auch gleich die magic_quotes_gpc-Konfigurationsoption deaktivieren.
 
Hallo!

danke für die Antwort! Allerdings ist es mir so nicht mehr möglich, PHP-Code in die Datenbank einzuspeisen(was ja sicher auf der einen Seite sinnvoll ist). Da es sich um die geschützte Daten-Eingabe eines CMS handelt, würde ich oben genanntes gerne trotzdem möglich machen.
Wie stelle ich das an?
 
Achso - sorry. Ich meinte damit, dass ich die Möglichkeit, PHP-Code in die DB einzugeben der "absolut sicheren" vorziehe, da es sich um eine durch Passwort geschützte Eingabe handelt. Aber es geht auch mit der "absolut sicheren", ich hatte einen Fehler bei der Dekodierung der html-entities.

Trotzdem vielen Dank!
 
Ist dein Anliegen diesbezüglich damit befriedigt? Falls ja, vergiss nicht dieses Thema als erledigt zu markieren.
 

Neue Beiträge

Zurück