【发布时间】:2017-09-12 00:11:24
【问题描述】:
在我之前的帖子PHP Looping through elements and adding to Database之后
我又回到了绘图板上,因为我害怕注射并且想要一些建议。以下是否“安全”:
$stmt = $conn->prepare("INSERT INTO responses (skey, rtext) VALUES (?, ?)");
$stmt->bind_param("is", $skey, $rtext);
$skey = 1;
$rtext = mysqli_real_escape_string($conn,$_POST['Q1Answer']);
if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
$skey = 2;
$rtext = "Hello";
if(!$stmt->execute()){trigger_error("there was an error....".$con->error, E_USER_WARNING);}
$stmt->close();
$conn->close();
我也可以调用下面的函数:
function SanitizeForSQL($str)
{
if( function_exists( "mysql_real_escape_string" ) )
{
$ret_str = mysql_real_escape_string( $str );
}
else
{
$ret_str = addslashes( $str );
}
return $ret_str;
}
以上任何一项都有助于防止注射吗?
【问题讨论】:
-
prepare 将为每个参数执行转义字符串函数,因此不需要。
标签: php mysql sql-injection sanitization