如何使用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);