Maison >développement back-end >tutoriel php >Comment puis-je échapper en toute sécurité les chaînes dans les requêtes SQL Server à l'aide de PHP ?

Comment puis-je échapper en toute sécurité les chaînes dans les requêtes SQL Server à l'aide de PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 02:05:14202parcourir

How Can I Safely Escape Strings in SQL Server Queries Using PHP?

Échapper des chaînes dans SQL Server à l'aide de PHP : un guide complet

Lorsque vous travaillez avec SQL Server à l'aide de PHP, il est crucial de protéger vos données contre Attaques par injection SQL en échappant correctement les chaînes. Il s'agit d'une technique permettant d'empêcher que des entrées malveillantes soient interprétées comme des commandes SQL.

Alternative à mysql_real_escape_string()

Contrairement à MySQL, SQL Server ne fournit pas de fonction intégrée fonction équivalente à mysql_real_escape_string().

Entrée addslashes()

addslashes() est une fonction PHP qui est souvent considérée comme une alternative potentielle à l'échappement de chaîne. Cependant, il est important de noter que addlashes() n'est pas entièrement adapté à une utilisation avec les bases de données SQL Server.

Une solution plus robuste

La solution idéale est d'encoder manuellement les données sous forme de chaîne d'octets hexadécimale. Voici un extrait de code pour vous guider :

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');

Abstraction pour l'échappement réutilisable

Pour simplifier et réutiliser le processus d'échappement, vous pouvez créer une fonction personnalisée comme celle-ci :

function mssql_escape($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (' . mssql_escape($somevalue) . ')
');

Alternative à mysql_error()

Pour la gestion des erreurs, SQL Server fournit mssql_get_last_message() comme alternative à mysql_error().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn