0

我对 PHP 很陌生,并且被告知我的 MySQL 语句对于注入是不安全的。

有我的旧查询:

$addbook = "INSERT INTO bookings (bookID, startDate, startTime, endDate, endTime) ";
$addtempres .= "VALUES ('".$bookid."', '".$startdate."', '".$starttime."', '".$enddate."', '".$endtime."')";
$insertBook = mysql_query($addbook);

$getblogposts = mysql_query("SELECT * FROM blogposts WHERE deleted = 'no' ORDER BY postID DESC LIMIT 4");

阅读后我知道它们是不安全的,我也知道 mysql_query 是旧的,并且正在贬值。

然而,我已经写了很多这样的查询,并且意识到它们都是旧的和不安全的是令人生畏的,所以我开始尝试保护它们。

所以我这样做了:

$escapedbookid = mysql_real_escape_string($bookid) ;
$escapedstartdate = mysql_real_escape_string($sqlcoldate);
$escapedstarttime = mysql_real_escape_string($forstarttime);
$escapedenddate = mysql_real_escape_string($sqlretdate);
$escapedendtime = mysql_real_escape_string($forendtime);
$escapedactive = mysql_real_escape_string('false');

$addtembook = "INSERT INTO bookings (bookID, startDate, startTime, endDate, endTime) ";
$addtempres .= "VALUES ('".$escapedbookid."', '".$escapedstartdate."', '".$escapedstarttime."', '".$escapedenddate."', '".$escapedendtime."')";
$insertRes = mysql_query($addtempbook);

这更安全吗?当我学习将当前查询转换为 PDO 准备语句时,我很欣赏 PDO 准备语句更容易、更安全,但我只是想知道我所做的是否是让事情更安全?

4

1 回答 1

1
  1. 停止使用 mysql_ 库 - 它已被弃用 - 改用 mysqli_ 库(或 PDO)。
  2. 查看准备好的语句的网页 - http://www.php.net/manual/en/mysqli.prepare.php - 该示例将为您提供有关如何编写代码免受 SQL 注入影响的模板。
于 2013-03-14T11:52:30.197 回答