防止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-是的。这个答案中有多少陈述是错误的?