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

Propel的fromArray / fromJSON功能对SQL注入安全吗?

罗波鸿
2023-03-14
问题内容

Propel ORM文档提到了使用诸如fromArray和fromJSON之类的函数的整洁的导入/导出功能,该功能应允许如下所示:

$foo = new Widget();
$foo->fromArray($_POST);
$foo->save(); /* Aaand you're done! */

…但是文档没有提及是否应该以这种方式使用fromArray是安全的,即fromArray是否可以处理不受信任的输入。我的猜测是可以的-
默认设置器是防注入的,并且整个交易都基于PDO-但我想确定。


问题答案:

Propel不仅使用PDO进行查询,还通过PDO利用了预处理语句,这在缓解SQL注入攻击(以及增强性能)方面非常出色。

请注意, 使用PDO不能保证对SQL注入没有任何保护,请始终使用Prepared
Statements

因此,作为对您问题的回答,是的,Propel充分利用了PDO的功能来防止SQL注入。



 类似资料:
  • 注入技术包括使用应用程序的输入字段注入SQL查询或命令。 Web应用程序SQL注入 成功的SQL注入可以读取,修改数据库中的敏感数据,还可以从数据库中删除数据。它还使黑客能够对数据库执行管理操作,例如:关闭DBMS/删除数据库。 我们通过下面一个简单的图表了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 匿名外部攻击者以及拥有自己帐户的用户可能会尝试从其他人那里窃取帐

  • 我在mybatis查询中使用“$”表示法: order参数可以是类似于“id desc”的东西,我需要担心这里的sql注入吗?我们知道mybatis使用,如果mybatis针对“select”语句调用,或者jdbc驱动程序实现不允许在一次调用中使用多个语句,那么sql注入是不可能的,对吗? 这是否足以检查参数有sql分隔符?

  • 问题内容: 给出50的结果。这是为什么?它是如何计算的? (对不起,我被这个问题的较早版本误认为值是46) 问题答案: SQL ROUND()函数将数字四舍五入到精度… 例如: round(45.65,1)给出结果= 45.7 round(45.65,-1)给出结果= 50 因为这种情况下的精度是从小数点开始计算的。如果为正数,则将考虑右侧数字,如果> = 5,则将其向上舍入;如果<= 4,则四舍

  • 问题内容: 我一直在阅读一些有关SQL注入的信息,我想确保我的代码可以说“安全”,我打算使用RegExp验证程序来检查用户输入,但是这里的另一篇文章建议仅使用参数化查询,我正在使用它们,但我想确保我的代码是安全的,对吗? 我将最后一部分剪短,使文章更短,其余的只是尝试并捕获异常并关闭数据库连接,以及提供有关插入成功的用户反馈。 问题答案: 您的代码很好,可以防止注入,因为值是作为参数而不是字符串文

  • 问题内容: 我有两个SQL查询,其中每次调用时我都尝试用+1和-1分别更新和值。 第一个查询: 第二查询 因为与我交换而在第二次注射查询中有任何威胁吗? 问题答案: 不,第二个查询与第一个查询一样安全,因为它已完全参数化,因此没有提供外部数据可以通过其输入SQL查询本身文本的路径。该表达式是由RDBMS计算的,而不是由程序*计算的,因此它不能提供将新代码注入现有SQL的机会。 *,并且随后不会提供

  • 问题内容: public static bool TruncateTable(string dbAlias, string tableName) { string sqlStatement = string.Format(“TRUNCATE TABLE {0}”, tableName); return ExecuteNonQuery(dbAlias, sqlStatement) > 0; } 问题