如何使用PHP和sqlsrv驱动程序清理输入?

问题描述:

我正在使用sqlsrv驱动程序的PHP MSSQL项目。 阻止SQL注入攻击的最佳方法是什么?我需要像mysql_real_escape_string(),但是对于sqlsrv驱动程序。如何使用PHP和sqlsrv驱动程序清理输入?

最好的办法不是编写您的SQL,因此您需要使用mysql_real_escape_string()的模拟,您可以通过为值使用占位符然后传递变量(否则该变量将由mysql_real_escape_string()处理)你执行语句或打开游标或其他任何东西。

失败的是,看看mysql_real_escape_string()的输出;它也可能适用于MS SQL Server。这取决于它如何逃避(以及逃避它)。

如果使用这样的,报价是自动的:

$sql = "exec usp_cis_upd 
     @key = ?, 
     @value = ?"; 

$params = array(
    $key, 
    trim($_POST["value"])); 

$stmt = sqlsrv_query($dbh, $sql, $params);