Je passe une variable à une fonction qui exécute une requêteAlternative sûre à mysql_real_escape_string? (PHP)
La connexion MySQL ne se produit que dans la fonction, et ferme dans la fonction
Je veux être en mesure d'échapper en toute sécurité cordes avant que je les envoyer à la fonction
Je ne peux pas utiliser mysql_real_escape_string car il nécessite une connexion MySQL (qui est uniquement faite à l'intérieur de la fonction)
Je sais que la réponse simple serait d'échapper à des chaînes dans la fonction, mais Je ne peux pas faire ça parce que je doivent envoyer certains se sont échappés, et certaines parties non échappé d'une chaîne
Par exemple, je dois exécuter la fonction comme ceci:
myquery("'" . escape_me("My string") . "'");
Avis J'envoie deux apostrophe's-- non échappés, avec un chaîne échappée à l'intérieur. Pour cette raison, je ne peux pas faire une couverture mysql_real_escape_string sur les arguments à l'intérieur de la fonction myquery.
Je trouve le code suivant, ce qui suggère que je pourrais l'utiliser comme une alternative à mysql_real_escape_string:
// escape characters
function escape_me($value) {
$return = '';
for($i = 0; $i < strlen($value); ++$i) {
$char = $value[$i];
$ord = ord($char);
if($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)
$return .= $char;
else
$return .= '\\x' . dechex($ord);
}
return $return;
}
Je ne sais pas si cette fonction est à l'abri des attaques multi-octets, mais je pense que je dois aussi défaire la fonction à chaque fois que je fais une recherche
Par exemple, l'entrée: Test 3 est « OK » est transformé en test 3x27s x22OKx22 dans la base de données
ma question principale est: Do vous savez s'il y a une autre fonction que je peux utiliser comme alternative à mysql_real_escape_string qui va échapper en toute sécurité aux caractères?
avez-vous un exemple de choses non échappées? –