首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PDO::prepare和PDO::quote是否完全安全?

PDO::prepare和PDO::quote是否完全安全?
EN

Stack Overflow用户
提问于 2017-06-09 05:58:25
回答 1查看 506关注 0票数 0

我正在使用PDO包来管理我的应用程序数据库。我使用PDO::preparePDOStatement::execute和一些时候的PDO::quotePDO::query / PDO::exec来执行我的查询

PDO::preparePDO::quote是完全安全的吗?或者我是否应该做更多的工作来正确地验证我的inputs.not,只针对数据库,而对于php代码,要么谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-06-09 09:28:51

使用prepare()没有什么神奇之处。您可以将不安全的变量插入到字符串中,然后准备该字符串。Boom-SQL注入。准备一个语句并不意味着它是安全的。

代码语言:javascript
运行
复制
$stmt = $pdo->prepare("SELECT * FROM MyTable WHERE id = {$_POST['id']}"); // UNSAFE!

使其安全的是使用参数。

代码语言:javascript
运行
复制
$stmt = $pdo->prepare("SELECT * FROM MyTable WHERE id = ?");
$stmt->execute([$_POST['id']]); // SAFE!

自然,人们说“使用预准备语句”,因为您必须使用预准备语句来使用参数。但是,仅仅说“使用准备好的语句”有点误解,一些开发人员得到了错误的理解。

PDO quote()方法也是安全的,但我发现它更简单,更容易使用参数。

代码语言:javascript
运行
复制
$idQuoted = $pdo->quote($_POST['id']);
$stmt = $pdo->prepare("SELECT * FROM MyTable WHERE id = $idQuoted");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44446229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档