Archief - MYSQL: escape

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Boris Barowski

Legacy Member
Hey iedereen,

ik heb eens een vraagje over het escapen van characters
Momenteel ben ik bezig aan een projectje, en dat heeft een registratieformulier nodig

ik doe mijn registratie met de volgende functie:

PHP:
function register($data)
{
 $connection = new mysqlconnection;
 $pass = md5($data["pass"]);
 
 $connection->query("INSERT INTO users VALUES ('','".$data["uname"]."', '".$pass."')");
 
 $result = $connection->query("SELECT uid FROM users WHERE uname='".$data["uname"]."'");
 $return = mysql_fetch_assoc($result);
 
 $connection->query("INSERT INTO userdetail VALUES ('".
  $return["uid"]."','".
  $data["name"]."','".
  $data["adres"]."','".
  $data["nr"]."','".
  $data["pc"]."','".
  $data["city"]."','".
  $data["country"]."','".
  $data["mail"]."','".
  $data["phone"]."','".
  $data["corporate"]."','".
  $data["admin"]."')");
 require_once 'Date.php';
 $now = new Date();
 $joined = $now->getDate();
 
 $regcode = md5($return["uid"].$data["mail"].$joined);
 
 $connection->query("INSERT INTO awaitconfirmation VALUES ('".$return["uid"]."','".$joined."','".$regcode."')");
 $connection->close();
 regmail($return["uid"],$data["name"],$regcode,$data["mail"]);
 header("location: index.php?page=registerdone&lang=".findlang());
 
}

nu, tot zover geen enkel probleem dus, maar als iemand in de form, in bv een username, een single quote plaatst, dan is mijn hele mysql query omzeep.

hoe escape ik makkelijk single quotes in een string die door de user wordt doorgegeven ?

MrO

Legacy Member
Rond alle velden die door de gebruiken ingevuld kunnen worden zet je best mysql_real_escape_string()

Het zorgt er niet enkel voor de je quotes goed in de db komen, maar het zorgt er ook voor dat bepaalde aanvallen (sql injection) niet meer werken.

Als je je gegevens weer ophaalt uit de databank, moet je wel stripslashes gebruiken op ervoor te zorgen dat je de waarde 'unescaped' kan weergeven.

Gz

Boris Barowski

Legacy Member
werkt super, hartelijk dank!

we leren iets bij :)

wel spijtig dat ik er nu altijd moet aan denken van stripslashes te gebruiken.
mysql_real_escape_string werkt niet goed op de hele query, dus das altijd per element, maar kan ik evt stripslashes plaatsen in mijn connectionclass?



PHP:
class mysqlconnection
{
	function mysqlconnection()
	{
		mysql_connect("imnotstupid");
		mysql_select_db("datab2ase");
	}
	
	function query($query)
	{
		$ret = mysql_query($query) or die(mysql_error())
		$return=stripslashes($ret);		
		return $return;
	}
	
	function close()
	{
		mysql_close();
	}
}

UPDATE: zal moeilijk zijn denk ik, voor arrays enzo is dat niet te doen

killgore

Legacy Member
ehm, gewoon als je een gpc variabele ophaalt altijd dit doen:

if(!get_magic_quotes_gpc()) $var = addslashes($_POST["var"]);
else $var = $_POST["var"];

Dan zijn ze escaped. Die real_escape is niet echt 100% nodig in php (voor veiligheid toch niet).

Bram

Legacy Member
ik gebruik ook altijd get_magic_quotes, iets handiger, want idd, die stripslashes durf ik ook wel al eens vergeten...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan