PHP PDO 与 mysql_*() 的安全优势

发布于 2024-11-09 16:48:42 字数 47 浏览 0 评论 0原文

使用 PHP PDO 代替 mysql_connect() 等有任何安全优势吗?

Are there any security benefits of using PHP PDO instead of the mysql_connect(), etc.?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

忆悲凉 2024-11-16 16:48:42

不会。与 MySQL 扩展相比,PDO 没有任何安全优势(墨菲定律告诉我们的除外,该定律对两者都适用)。两者都会通过转义相同的字符来保证输入安全。

然而,PDO 还有其他优点:

  • 支持准备好的语句;
  • 面向对象的接口;
  • 数据访问抽象;并
  • 生成更清晰的代码,因为您可以一次转义多个值

这些通常被认为是最重要的。

No. There is no security benefit to PDO vs the MySQL extension (except for what Murphy's law has taught us, which applies to both). Both will render input safe by escaping the same characters.

However, PDO has other advantages:

  • Support for prepared statements;
  • Object-oriented interface;
  • Data access abstraction; and
  • Produces cleaner code because you can escape multiple values at once

These are generally considered as the most important.

仅此而已 2024-11-16 16:48:42

甚至不需要绑定参数,就

$stmt = $pdoConnection->prepare('SELECT foo FROM bar WHERE baz = :baz');
$stmt->execute(array(':baz' => 1));
foreach ($stmt as $row) {
}

这么简单。

No need even to bindParam, just do

$stmt = $pdoConnection->prepare('SELECT foo FROM bar WHERE baz = :baz');
$stmt->execute(array(':baz' => 1));
foreach ($stmt as $row) {
}

That easy.

随遇而安 2024-11-16 16:48:42

是的,如果您使用 bindParam() 方法而不是使用 mysql_real_escape_string() 进行字符串连接。

记住在外部数据中使用 bindParam() 比记住使用 mysql_* 自己转义每个值要容易得多。

此外,PDO 更易于使用。

Yes, if you are using bindParam() method instead of string concatenation with mysql_real_escape_string().

It's much easier to remember to bindParam() outside data than it is to remember to escape every value yourself with mysql_*.

In addition, PDO is just much nicer to work with.

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