简单的问题,我想要简单的答案。我正在使用 PDO 准备好的语句来确保我的数据被安全地处理到数据库中。但我很困惑。如果启用了magic_quotes,我是否必须禁用魔术引号或在变量上使用stripslashes。然后让 PDO 做安全工作?
问问题
1282 次
2 回答
5
如果您使用 PDO 的预处理语句将数据插入数据库,则数据将完全按照您插入的方式进入数据库。 magic_quotes
在数据中添加斜线:因此这些将出现在数据库中。这显然不是你想要的。
正如您所说,禁用魔术引号,或者,如有必要,使用stripslashes
.
于 2011-11-19T13:08:56.380 回答
1
第 1 阶段 - 视图:
你输入某人的名字<input type="text" name="name"></input>
Stage2 - 型号:
现在您发布到模型,用于$_POST['name']
获取某人的姓名并编写一条 sql 语句:
$sql = "INSERT INTO tableName 'name' VALUES(:name)"; // Then prepare and bindParam
在您可以使用 PDO 访问数据库之前,如果您的 gpc 已打开,您的 sql 语句将被转义。也就是说,某人的名字现在将是某人的名字。然后使用 PDO 访问数据库。但是现在数据库中保存了某人的名字,因为 PDO 不会知道单引号前的反斜杠是由 gpc 添加的,而是 PDO 认为您故意在单引号前添加了反斜杠。
结论:如果你使用 PDO,只需关闭 gpc。
于 2013-01-24T18:40:20.773 回答