Codeigniter 如何清理输入?

2024-05-07

我正在构建一个 Codeigniter 应用程序,并且正在尽最大努力防止 SQL 注入。我正在使用 Active Record 方法来构建我的所有查询。我知道 Active Record 会自动清理输入,但我想知道到底清理到什么程度?它只是简单地转义了所有引号,还是做了更多的事情?如何防止混淆的 SQL 注入或其他更高级的注入?

基本上,我正在寻找有关 CI 如何清理数据的深入解释。有人知道吗?


就像这样(对于 MySQL 驱动程序):

  • Tries mysql_real_escape_string()(99%的情况都是这样)
  • 回落至mysql_escape_string()
  • 回落至addslashes()
  • 手动逃生% and _ in LIKE条件通过str_replace()

https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/drivers/mysql/mysql_driver.php#L294 https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/drivers/mysql/mysql_driver.php#L294

/**
* Escape String
*
* @access public
* @param string
* @param bool whether or not the string will be used in a LIKE condition
* @return string
*/
function escape_str($str, $like = FALSE)
{
    if (is_array($str))
    {
        foreach ($str as $key => $val)
        {
            $str[$key] = $this->escape_str($val, $like);
        }

        return $str;
    }

    if (function_exists('mysql_real_escape_string') AND is_resource($this->conn_id))
    {
        $str = mysql_real_escape_string($str, $this->conn_id);
    }
    elseif (function_exists('mysql_escape_string'))
    {
        $str = mysql_escape_string($str);
    }
    else
    {
        $str = addslashes($str);
    }

    // escape LIKE condition wildcards
    if ($like === TRUE)
    {
        $str = str_replace(array('%', '_'), array('\\%', '\\_'), $str);
    }

    return $str;
}

请注意,这只是转义字符,因此 MySQL 查询不会中断或执行意外操作,并且仅在数据库查询上下文中使用,以确保基于您传递给它的语法正确。

没有什么魔法可以保证所有数据的安全any上下文(如 HTML、CSV 或 XML 输出),以防万一您正在考虑它:xss_clean()不是一刀切的解决方案,也不是 100% 万无一失的,有时它实际上是相当不合适的。 Active Record 类会自动执行查询转义,但对于其他所有内容,您应该针对给定上下文以正确的方式手动转义/清理数据,并使用您的output, 不是你的input.

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

Codeigniter 如何清理输入? 的相关文章

  • Codeigniter 滚动分页

    我正在使用 jquery 插件滚动分页在 codeigniter 中 我面临的问题是我的循环不会终止 并且也无法给出准确的结果 这是我的html code div div div class image box style margin l
  • SWIG 生成的代码无法在 PHP 5.3.2 上运行未定义的符号:zend_error_noreturn

    我有一个库 在 PHP 5 1 6 生成的一些包装器代码的帮助下 我已经成功地使用了它SWIG http www swig org v1 3 40 我刚刚升级到 PHP 5 3 2 但看到以下错误 PHP Warning PHP Start
  • 使用php将cmyk转rgb

    我正在使用以下脚本将图像保存在文件夹中 但有一张图像显示此消息 图像无法显示 因为它包含错误 我认为问题出在图像上称为 cmyk 和 rgb 的东西 但是当在网上搜索使用 php 将 cmyk 转换为 rgb 的方法时 我找不到如何执行此操
  • php 中的 cpu_get_usage ?

    我创建了一个基准类 允许用户插入例如 timer gt checkpoint 1 检查一些代码的时间 内存消耗等 如果她 他想测试它 她 他必须在代码末尾插入 result timer gt result 这会向公共函数 result 提供
  • 递增字母数字组合

    我偶然发现了这篇文章 如何在 PHP 中仅使用小写字母和数字来增加字母数字字符串 https stackoverflow com questions 42866349 how to increment alphanumeric string
  • java ResultSet,使用MAX sql函数

    你好 这就是我想要的 我连接到数据库并检索 UniqueId 列的最大元素 并将其分配给名为 maxID 的整数变量 这是我的方法 int maxID 0 Statement s2 con createStatement s2 execut
  • 属性“tablename.title”未定义

    我是伊比 我想做的是上传图像 照片 以及具有更新功能的数据库中的路径条目 我已点击此链接 http www yiiframework com wiki 349 how to upload image photo and path entry
  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • 给定“java.sql.SQLIntegrityConstraintViolationException”是否可以确定错误的列

    鉴于我有一个类型为 java sql SQLIntegrityConstraintViolationException 的异常 是否可以以编程方式确定错误的列 或多列 我问这个问题是因为我想将错误映射回客户端的数据模型以指示错误的字段 例如
  • Windows 8.1 升级后 Apache 无法工作 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 今天从 Windows 8 升级到 Windows 8 1 后 Apache 不再工作 我上次从 Windows 7 升级到 Window
  • 在单个 select 语句中多次有条件地求和同一列?

    我有一个表 显示每个月在给定位置的各种类型的部署的员工部署情况 ID Location ID Date NumEmployees DeploymentType ID 例如 一些记录可能是 1 L1 12 2010 7 1 Permanent
  • 谁添加“_”单下划线查询参数?

    我有一个在 Apache 上运行的 PHP 服务器 我收到很多类似这样的请求 10 1 1 211 02 Sep 2010 16 14 31 0400 GET request 1283458471913 action get list HT
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • 更新 Bootstrap 缩略图网格 - ajax 请求

    设想 我有一个带有显示国家 地区的 Twitter Bootstrap 缩略图网格的视图 当用户单击一张图像时 它应该在同一网格 屏幕 中显示与该国家 地区相关的城市 技术的 首先 我用国家 地区填充 dataProvider 然后我应该将
  • PHP 根据需要添加额外的空格

    考虑以下代码 div div search php and category php本质上是相同的结构 具有一些特定内容的 div 容器 这里没什么特别的 纯 HTML div class component div 但是 当插入时requ
  • JpGraph:使用 AccBarPlot 时如何控制 v3.5.0b1 中的 x/y 偏移、边距和颜色?

    一点背景 我正在尝试将使用 Symfony 1 2 构建的项目从一台服务器迁移到另一台服务器 该项目的功能之一是构建图表 最初使用 JpGraph 2 3 5 完成 如果不修改代码 该图表不会按预期显示 我正在寻找一些关于我可能忽略的内容的
  • Laravel - 保存在存储文件夹中的图像不向用户显示

    我有这段代码可以将图像保存在 storage app uploads 文件夹中 image main Image where property id id gt get file request gt file file destinati
  • Laravel http 请求:无法运行多个请求

    我在 Laravel http 请求方面遇到了严重的问题 请帮我解决这个问题 我假设我有 2 个请求路由到相同的控制器 Req 1 http localhost 8000 manualScheduler runScript task nam
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • 有没有办法阻止 SQL Express 2008 空闲?

    我使用 SQL Express 2008 作为 Web 应用程序的后端 问题是 Web 应用程序是在工作时间使用的 因此有时在午餐或休息时间 如果 20 分钟内没有用户登录 SQL Express 将进入空闲状态模式并释放其缓存 我知道这一

随机推荐