所以我使用mysql_real_escape_string
函数在以下代码中停止sql注入攻击,但它似乎没有工作,我将如何解决这个问题?
<?php
$address = mysql_real_escape_string($_POST['bitcoinaddress']);
$btc = mysql_real_escape_string($_POST['btcamount']);
$phone = mysql_real_escape_string($_POST['phonenumber']);
$con = mysql_connect("localhost","db user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db_name", $con);
$sql="INSERT INTO `db_name`.`form` (`bitcoinaddress`, `btcamount`, `phonenumber`) VALUES
('$_POST[bitcoinaddress]','$_POST[btcamount]','$_POST[phonenumber]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo ($_POST['btcamount']);
mysql_close($con);
?>
答案 0 :(得分:1)
问题是你没有使用它......
进行此更改。
<?php
$address = mysql_real_escape_string($_POST['bitcoinaddress']);
$btc = mysql_real_escape_string($_POST['btcamount']);
$phone = mysql_real_escape_string($_POST['phonenumber']);
$con = mysql_connect("localhost","db user","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db_name", $con);
$sql="INSERT INTO `db_name`.`form` (`bitcoinaddress`, `btcamount`, `phonenumber`) VALUES
('".$address."','".$btc."','".$phone."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo ($btc);
mysql_close($con);
?>
答案 1 :(得分:0)
您正在使用转义值创建变量,然后继续使用原始变量。
但是这样使用mysql_real_escape_string()
并不是一个好主意,因为它不会在没有额外工作的情况下正确地清理数据,例如检查数字输入实际上是数字。请改用mysqli
或pdo
和预备语句。