使用 PDO 时是否必须禁用魔术引号
简单的问题,我想要简单的答案。 我正在使用 PDO 准备好的语句来确保我的数据被安全地处理到数据库。 但我很困惑。如果启用了 magic_quotes,我是否必须禁用魔术引号或在变量上使用斜杠。然后让 PDO 来做安全工作之后呢?
Simple question and i want simple answer.
I'm using PDO prepared statements to make sure my data are safely processed to the database.
But im confused. Do i have to disable magic quotes or use stripslashes on variables if magic_quotes are enabled. And after then letting the PDO do the security job ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
阶段 1 - 视图:
您在
中输入某人的名字
阶段 2 - 模型:
现在您发布对于模型,使用
$_POST['name']
获取某人的名字并编写一条 sql 语句:在使用 PDO 访问数据库之前,您的 sql 语句将在以下情况下被转义:你的gpc已开启。也就是说,某人的名字现在将是某人的名字。然后使用 PDO 访问数据库。但是现在数据库中保存了某人的名字,因为PDO不会知道单引号前的反斜杠是gpc添加的,而是PDO认为你故意在单引号前添加了反斜杠。
结论:如果使用PDO,关闭gpc即可。
Stage1 - View:
You type somebody's name to
<input type="text" name="name"></input>
Stage2 - Model:
Now you post to Model, use
$_POST['name']
to fetch somebody's name and write a sql statement:Before you can access database using PDO, your sql statement will be escaped if your gpc is on. That is, somebody's name will be somebody\'s name now. Then you use PDO to access database. But now in the database somebody\'s name is saved, because PDO will not know that the backslash before single quote was added by gpc, instead PDO thinks that you added that backslash before single quote intentionally.
Conclusion: If you use PDO, just turn gpc off.
如果您使用 PDO 的预准备语句将数据插入数据库,则数据将按照您插入的方式准确地进入数据库。
magic_quotes
向数据添加斜杠:因此这些斜杠将出现在数据库中。这显然不是你想要的。正如您所说,禁用魔术引号,或者如有必要,使用
stripslashes
。If you are using PDO's prepared statements to insert data into your database, the data will go into the database exactly as you insert it.
magic_quotes
adds slashes to the data: these will therefore be present in the database. This is obviously not what you want.As you say, disable magic quotes or, if necessary, use
stripslashes
.