使用 PDO 时是否必须禁用魔术引号

发布于 2024-12-17 08:41:00 字数 123 浏览 1 评论 0原文

简单的问题,我想要简单的答案。 我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可遇━不可求 2024-12-24 08:41:01

阶段 1 - 视图:

您在 中输入某人的名字

阶段 2 - 模型:

现在您发布对于模型,使用 $_POST['name'] 获取某人的名字并编写一条 sql 语句:

$sql = "INSERT INTO tableName 'name' VALUES(:name)"; // Then prepare and bindParam

在使用 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:

$sql = "INSERT INTO tableName 'name' VALUES(:name)"; // Then prepare and bindParam

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.

∝单色的世界 2024-12-24 08:41:00

如果您使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文