当前位置: 首页 > 面试题库 >

如何使用PDO清理输入?

酆阳煦
2023-03-14
问题内容

使用PDO]库时是否需要mysql_real_escape_string()在输入中使用(例如$_POST$_GET)?

如何使用PDO正确避开用户输入?


问题答案:

如果使用PDO,则可以对查询进行参数化,从而无需转义任何包含的变量。

使用PDO,您可以使用准备好的语句将SQL和传递的参数分开,这消除了对转义字符串的需要,因为由于将两者分开保存,然后在执行时组合在一起,因此从上述来源自动将参数作为字符串处理:

   // where $dbh is your PDO connection

   $stmt = $dbh->prepare("SELECT * FROM animals WHERE animal_id = :animal_id AND animal_name = :animal_name");

   /*** bind the paramaters ***/
   $stmt->bindParam(':animal_id', $animal_id, PDO::PARAM_INT);
   $stmt->bindParam(':animal_name', $animal_name, PDO::PARAM_STR, 5);

   /*** execute the prepared statement ***/
   $stmt->execute();

注意:在变量绑定($stmt->bindParam)期间进行清理



 类似资料:
  • 问题内容: 是否有某个功能全面的功能可以很好地用于清理用户针对SQL注入和XSS攻击的输入,同时仍然允许某些类型的HTML标签? 问题答案: 常见的误解是可以过滤用户输入。PHP甚至有一个(现在已弃用的)“功能”,称为magic-quotes,它基于此思想。废话 忘记过滤(或清洁,或任何人称呼它)。 为避免出现问题,您应该做的事情很简单:每当将字符串嵌入外部代码中时,都必须根据该语言的规则对其进行

  • 我一直在研究清理用户输入的最有效方法。我的应用程序是一个简单的post请求,用于对用户进行身份验证。在网上我可以找到十几种不同的“最佳”方法。这些方法中有很多都使用不推荐的php函数,或者看起来过于复杂。为了连接到我的sql数据库,我使用PDO类。 在搜索自己的函数时,我无意中发现: 带有绑定参数的预准备语句不仅更可移植、更方便、不受SQL注入的影响,而且通常比内插查询执行得快得多,因为服务器端和

  • 问题内容: 我正在使用sqlsrv驱动程序的PHP MSSQL项目上。阻止SQL注入攻击的最佳方法是什么?我需要类似mysql_real_escape_string()的东西,但要使用sqlsrv驱动程序。 问题答案: 最好的方法是不要编写SQL,以便您需要使用的类似物,可以通过使用占位符作为值,然后在执行语句或打开时传递变量(否则将由来处理)来实现。光标或其他任何东西。 如果失败,请查看;的输出

  • 问题内容: 我需要清理生产服务器中的PostgreSQL数据库。我是新来的。所以任何人都知道PostgreSQL的步骤,请指导我。 我认为在生产服务器中提高PostgreSQL的性能非常有用。 问题答案: 连接到数据库并发出以下命令:“ VACUUM”。这导致可以在正常生产使用期间使用的“惰性模式”运行。建议您实际将其作为“真空分析”来调用,这也会更新统计信息。 如果要查看大量详细信息,可以在控制

  • 问题内容: 我正在考虑添加富文本编辑器,以允许非程序员更改文本的外观。但是,一个问题是,如果标记不正确,则可能会扭曲渲染页面的布局。什么是清除html的好方法? 问题答案: 您将不得不在好和轻量之间做出选择。推荐的选择是“HTMLPurifier”,因为它提供了安全的默认设置。作为更快的替代方法,通常建议使用“htmLawed”。

  • 问题内容: 我正在构建Codeigniter应用程序,并且正在尽最大努力防止SQL注入。我正在使用Active Record方法构造所有查询。我知道Active Record会自动清除输入内容,但是我想知道到底是什么程度?它只是转义所有引号,还是做更多呢?如何防止混淆的SQL注入或其他更高级的注入? 基本上,我正在寻找有关CI如何清理数据的深入说明。有人知道吗 问题答案: 完全像这样(对于MySQ