Hoe kan ik onderstaande veiliger maken door vreemde karakters etc eruit te filteren?

$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

Ik dacht eraan om:

function mysql_entities_fix_string($string)
{
return htmlentities(mysql_fix_string($string));
}

te gebruiken maar weet dan niet goed hoe ik $url = moet herschrijven.
Waarom zou je dat willen doen?
Het escapen van data voor een (my)SQL context en een HTML context zijn in ieder geval twee compleet verschillende dingen.

Deze zouden dus ook NOOIT gecombineerd mogen worden.

En WTF doet mysql_fix_string()? MySQL (en ik mag hopen dat je ondertussen van ofwel MySQLi ofwel PDO gebruik maakt) heeft haar eigen escape-functies.

Daarbij is een correcte werking van escape-functionaliteit sterk afhankelijk van een character encoding. Het is altijd beter waar mogelijk expliciet te zijn welke encoding gebruikt zou moeten worden, zoals in je htmlentities() aanroep. Tevens is htmlspecialchars() meestal beter dan htmlentities().

Ook moet je ook NOOIT op voorhand van alles escapen, vooral niet als je nog niet weet in welke context je data gaat gebruiken. Acties om op voorhand $_SERVER op te schonen zijn daarom ook niet zinnig.

Reageren