1

我想知道是否需要在 PDO 中转义 $_POST 和/或 $_GET 数组?(哎呀)

例子:

<?php $name = $_POST['name']; ?>

我应该怎么做才能防止“SQL注入”?谢谢。

4

3 回答 3

1

如果您使用的是 pdo,则可以使用 prepare 语句

这里有很好的例子:

http://php.net/manual/en/pdo.prepare.php

PDO 将为您转义查询之前的值(使用准备语句),因此您不必担心。

于 2013-09-04T16:47:40.877 回答
1

双NO。

  • 你不应该逃避。
  • 您根本不应该特别注意 $_POST 或 $_GET 变量。

我应该怎么做才能防止“SQL注入”

  1. 而不是转义,您必须使用准备好的语句
  2. 重要的是数据目的地,而不是来源。

进入 SQL 查询的每个变量都应仅通过占位符添加,无论它来自 POST、GET 还是 ATM 电汇。

于 2013-09-04T16:55:06.150 回答
0

您应该使用准备好的语句。PDO 不仅为您转义了这些值,而且它还使查询字符串看起来更漂亮,并且更容易在以后进行维护。

$sql = 'SELECT * FROM users WHERE id=?';
$dbh->execute(array("@p1", $_GET['blah']));

当我需要 PDO 方面的帮助时,我使用哈希 PHP,它们更容易理解。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

于 2013-09-04T16:52:09.933 回答