Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止PHP中的SQL注入_Php_Sql Server - Fatal编程技术网

防止PHP中的SQL注入

防止PHP中的SQL注入,php,sql-server,Php,Sql Server,可能重复: 我正在制作一个系统,我需要防止SQL注入。我正在使用PHP和SQLServer2008R2。基本上我想知道的是我是否可以使用: mysql_real_escape_string 或者是否有一个特定的SQL Server。感谢您的反馈。您不能使用mysql特定的转义函数 使用一些有用的东西。我建议开始使用PDO。通过这种方式,您可以使用参数化查询,它将为您处理几乎所有的事情,包括SQL注入,并且它支持非常大的RDBMS,包括MSSQL 以下是一些让您开始学习的主题 我为我的项目制

可能重复:

我正在制作一个系统,我需要防止SQL注入。我正在使用PHP和SQLServer2008R2。基本上我想知道的是我是否可以使用:

mysql_real_escape_string

或者是否有一个特定的SQL Server。感谢您的反馈。

您不能使用mysql特定的转义函数


使用一些有用的东西。

我建议开始使用PDO。通过这种方式,您可以使用参数化查询,它将为您处理几乎所有的事情,包括SQL注入,并且它支持非常大的RDBMS,包括MSSQL

以下是一些让您开始学习的主题


我为我的项目制作了一个Cals,也许它可以帮助你

    <?php

    class clean
    {
        public static function stripJS($input)
        {
            return preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $input);
        }

        public static function email($input)
        {
            return clean::stripJS(filter_var($input, FILTER_SANITIZE_EMAIL));
        }

        public static function noTags($input)
        {
            return strip_tags(clean::stripJs($input));
        }

        public static function dbIN($input)
        {
            return mysql_real_escape_string(self::stripJS($input));
        }

        public static function dbOUT($input)
        {
            return stripslashes($input);
        }
    }

$input = clean::dbIN($input);

    ?>


我认为mysql real escape string对您来说应该足够了,但我不确定是否需要等待其他答案。@BookOfZeus,不,这不是这个问题的翻版,因为它没有解决这个问题MSSql@Rikudo塞宁,不,你错了
mysql\u real\u escape\u string
是与mysql一起使用的函数,而不是MSSQL@Ibrahim阿扎尔·阿马尔,你说得对。这是一个几乎完全相同的副本。一定错过了这一次,但它有帮助。谢谢更好的解决方案。谢谢易卜拉欣。现在阅读并使用PDO。事实上,我在某个地方读到使用转义字符串并不是那么安全。谢谢,我知道这个问题是在2011年提出的,但到2013年PDO不再支持MSSQL。@安德鲁,我在任何地方都找不到提到PHP不再支持MSSQL的消息来源,甚至在PHP手册中也找不到。事实上,在PHP手册中明确提到PDO支持MSSQL,这是源代码,抱歉-我之前发布过,当我有点累的时候-我想我的目的是解决一些不再受支持的驱动程序:PDO_BDLIB、PDO_ODBC、PDO_SQLSRV、MSSQL和SQLSRV正在浮动,但是只有PDO_SQLSRV和SQLSRV仍然被支持/推荐用于Windows(我相信)。MSSQL实际上是一个与PDO相关的完全独立的驱动程序,从来没有关联过。我的错。他正在使用Microsoft SQL而不是MySql@WilliamTWild-是的。这个答案中有多少陈述是错误的?