如何防止使用 Zend Framework 编写的应用程序中的 SQL 注入攻击?

2024-02-09

我对ZF的安全没有任何概念。操作数据库时必须使用Filter吗?也许绑定就足够了?这个怎么样:

$users->update($data, 'id=1');

是否应该以某种方式过滤 $data 数组?请随意写下您所知道的有关该问题的任何内容。

您能否提供一些有关 ZF 安全性的好文章的链接(主要是关于 SQL 注入和 XSS)?


简短回答
虽然采埃孚获取并提供some尽管采取了保护应用程序的措施,您仍然应该采取与没有 Zend Framework 时使用的相同的预防措施。


关于您的代码片段,请查看有关的章节参考指南中的 Zend_Db http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.write.insert:

默认情况下,数据数组中的值是使用参数插入的。这降低了某些类型的安全问题的风险。您不需要对数据数组中的值应用转义或引用。

这并不意味着您不必担心安全问题。例如,对于更新方法 http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.write.update above

第三个参数是一个包含 SQL 表达式的字符串,该表达式用作要更改的行的条件。此参数中的值和标识符未加引号或转义。您有责任确保将任何动态内容安全地插入到该字符串中。看引用值和标识符 http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.quoting了解帮助您做到这一点的方法。

Note因为你正在使用Zend_Db_Table显然,第三个参数是第二个参数。在内部,表实例会将调用委托给数据库适配器,第一个参数是表实例的表名。


关于Zend_View http://framework.zend.com/manual/en/zend.view.helpers.html和 XSS 攻击向量:

Zend_View 附带了一组初始的帮助器类,其中大部分与表单元素生成相关并自动执行适当的输出转义。

Again 其中大部分并不意味着全部。Zend_View确实提供Zend_View::escape() http://framework.zend.com/apidoc/core/Zend_View/Zend_View_Abstract.html#escape帮助您清理输出,但这没什么特别的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止使用 Zend Framework 编写的应用程序中的 SQL 注入攻击? 的相关文章

  • 如何使用 SQL Server 2008 执行多个 CASE WHEN 条件?

    我想做的是对同一列使用多个 CASE WHEN 条件 这是我的查询代码 SELECT Url p ArtNo p Description p Specification CASE WHEN 1 1 or 1 1 THEN 1 ELSE 0
  • 使用 PHP Selenium Webdriver 单击下拉菜单中的选项?

    我正在使用 PHP Selenium Webdriver 包装器Facebook https github com facebook php webdriver 任何人都可以给我一个如何单击或从选择下拉菜单中选择选项的示例吗 我已经尝试过这
  • 如何将今天的日期返回到 Oracle 中的变量

    我想做这个 DECLARE today as smalldatetime SELECT today GetDate 但我需要一个oracle翻译 甲骨文使用SYSDATE 还有 ANSI 标准CURRENT TIMESTAMP 除其他外 S
  • 如何使用 MySQL 选择有特定值的 2 个连续行?

    我正在构建一个系统 该系统应该显示学生何时连续缺席两天 例如 此表包含缺勤情况 day id missed 2016 10 6 1 true 2016 10 6 2 true 2016 10 6 3 false 2016 10 7 1 tr
  • 使用 PHP PayPal REST API 退款?

    我正在开发一个集成到 PayPal 的 REST API 中的 PHP 应用程序 我正确处理了事务并将事务 ID 保存到 MySQL 数据库中 我现在正在尝试退款 但无法让它停止给出 传入 JSON 请求未映射到 API 请求 错误 有人对
  • SKIP加锁和nowait的区别

    pl sql 中 SKIP 锁定游标和 nowait 游标之间的区别 我认为我找到的这张图片是描述差异的最佳例子 详细说明 http viralpatel net blogs oracle skip locked
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • PHP print_r() 中 _r 的含义是什么?

    我见过这个答案 https stackoverflow com questions 13103410 what does r suffix mean就这样 但我不确定它对于 PHP 是否相同 如果是 可重入的含义是什么 From PHP n
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • 使用 json_encode() 函数在 PHP 数组中生成 JSON 键值对

    我正在尝试以特定语法获取 JSON 输出 这是我的代码 ss array 1 jpg 2 jpg dates array eu gt 59 99 us gt 39 99 array1 array name gt game1 publishe
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • 使用函数的 SQL 查询 - 如何获取列表的最大计数

    如何查询 MAXIMUM COUNT 交易次数 我的代码如下 SELECT customer id COUNT customer id FROM rental GROUP BY customer id HAVING MAX COUNT cu
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification

随机推荐

  • babel-loader:模块构建失败:语法错误:在严格模式下删除局部变量

    我在用着babel loader in webpack使用自定义 babel plugin 将一些第三方代码转换为可以顺利通过 Webpack 捆绑器的格式 然而 当我的代码通过 babel 的解析器 babylon 运行来构建 AST 时
  • Docker 和设置 JVM 参数

    我需要在 Docker 容器中使用此类 JVM 选项运行 Java 应用程序 但我不知道在哪里可以设置它 我尝试使用 java Dcom 命令 但它不起作用 做这个的最好方式是什么 Dcom sun management jmxremote
  • 如何制作CRF++的模板文件?

    我是 CRF 的新手 我正在自学查看其手册 http crfpp googlecode com svn trunk doc index html source navbar templ http crfpp googlecode com s
  • Android 3.0 Canary 中未显示预览

    我已经开始使用最新的 Android Studio 3 0 但预览版遇到问题 它没有在预览选项卡中显示预览 这是我所做的
  • RuntimeError:线程“Dummy-1”中没有当前事件循环

    我正在开发一个带有 Python 后端和 Django 服务器的 Web 应用程序 我有一些树莓派 它们正在将数据发送到服务器 然后我应该从后端获取这些数据 我成功地在我的项目中做到了这一点 所以我对代码非常确定 现在我想将此功能集成到我的
  • WebSocket JS 的自定义标头

    我找到了一个简单的解决方案 使用 WebSocket 和基于 PHP 作为后端 js vuejs 作为前端的 Web 应用程序的自定义标头 我的应用程序应该连接到基于 Java 的 WebSocket 服务器以获取实时统计数据 受 Oaut
  • 如何默认在所有路由上将查询参数保留在角度5中?

    背景 用户使用参数调用应用程序的 url 并使用我的应用程序 在不同路由之间切换时 url 参数应在浏览器地址栏中保持可见 我必须在应用程序的每条路线上保留查询参数 这意味着如果我有网址 www example com app test i
  • 没有 App_Code 的 ASP.Net WCF 服务

    我想创建一个 WCF 服务 用于我的 ASP Net 网站 不是项目 该网站没有代码隐藏文件 这是传统 asmx 样式服务的一个选项 但没有appear用于 wcf 服务 或者将其代码存储在单独的代码项目中 并且仅由 svc 文件公开 我尝
  • 当违反测试超时时,NUnit 内部会做什么?

    当 NUnit 遇到超时时到底会做什么 我曾经认为它会通过抛出 TimeoutException 来中止测试 但这个测试证明并非如此 Test Timeout 100 ExpectedException typeof TimeoutExce
  • DELETE 请求出现巨大延迟,响应为 204,且 Objective-C 中没有内容

    我在使用 iOS 应用程序 我不是 iOS 开发人员 我负责该应用程序使用的 API 和删除请求时遇到问题 Api 使用没有 DELETE 请求内容的 204 响应 到目前为止 该响应对于所有客户端应用程序都运行良好 没有任何问题 问题是
  • tcl深度递归文件搜索,搜索带有*.c扩展名的文件

    使用旧答案在 tcl 中搜索文件 https stackoverflow com a 435094 984975 https stackoverflow com a 435094 984975 首先我们来讨论一下我现在在做什么 使用此功能
  • 查找分配给主驱动器的字母

    我正在尝试找到一个类似的函数Environ查找我的业务中的主驱动器已映射到特定 PC 上的哪个驱动器 使用文件路径 G Eworking SET Operations file 我知道我的电脑已被映射 因此该文件路径位于 G 驱动器内 但其
  • 如何从oracle的日期字段获取日期01-01-9999的时间(以毫秒为单位)

    我想从 oracle 的日期字段获取日期 01 01 9999 的毫秒数 我创建了下面的块来实现相同的目的 set serveroutput on declare base point constant timestamp to times
  • 创建接受任意数量的 void functor 的可变参数函数

    受到我上一个问题的启发 制作可变参数函数 它接受任意函子并返回输入函子的每个返回值的元组 https stackoverflow com questions 15059250 make variadic function which tak
  • 使用 iOS Storyboard 动态调整 UILabel 的高度

    我有一个标签 它是使用 iOS Storyboard 布局创建的 然而 标签的内容是动态的并且可以在运行时改变 如何确保标签的高度根据标签中的内容进行调整 I tried 将行数设置为 0 Setting Editor gt Size to
  • 更改Linux上的线程名称(htop)

    我有一个多线程应用程序 我希望 htop 作为示例 为每个运行的线程显示不同的名称 目前它显示的是用于运行主程序的 命令行 我尝试过使用 prctl PR SET NAME 但它仅适用于 top 并且该调用只能指定最多 16 个字节的名称
  • 烦恼 - 如何禁用 Eclipse 类路径条目警告

    我已经搜索了选项 但似乎找不到禁用这些警告的方法 诸如此类的警告 Classpath entry org eclipse jdt junit JUNIT CONTAINER 4 will not be exported or publish
  • 并发收集支持删除指定项吗?

    非常简单 除了 ConcurrentDictionary 如果必须的话我会使用它 但这不是真正正确的概念 是否有任何并发 集合 IPrducerConsumer 实现 支持基于项目或谓词的简单相等性删除特定项目定义删除条件 说明 我有一个多
  • 将 unicode 字符编码为 un​​icode 转义序列

    我有一个包含网站和地址的 CSV 文件 我需要处理这个文件来生成一个 json 文件 我将在 Django 中使用该文件将初始数据加载到我的数据库中 为此 我需要将 CSV 文件中的所有特殊字符转换为 unicode 转义字符 这是一个例子
  • 如何防止使用 Zend Framework 编写的应用程序中的 SQL 注入攻击?

    我对ZF的安全没有任何概念 操作数据库时必须使用Filter吗 也许绑定就足够了 这个怎么样 users gt update data id 1 是否应该以某种方式过滤 data 数组 请随意写下您所知道的有关该问题的任何内容 您能否提供一