`
天梯梦
  • 浏览: 13734282 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

CodeIgniter 的数据安全过滤全解析

阅读更多

由于对CI的SQL安全这些不放心,今天寡人啃了一下午的代码,算是对其机制比较了解了,为了让各位兄弟姐妹少走弯路,特将战果公布,希望大家喜欢。
1.无论如何在获取参数之时都建设将 xss过滤打开,比如 $this->input->get('username',true); 其中的true就代表打开了 xss
2.不要直接使用$_GET等类似方式获得数据,如果这样获取数据的话将不会被xss过滤
3.CI的数据在入库之前不仅不会增加转义字符,而且还会取消它 比如 Input.php 里面的这么一段

// We strip slashes if magic quotes is on to keep things consistent
if (get_magic_quotes_gpc())
{
$str = stripslashes($str);
}
 

4.如果你使用 $this->db->query('YOUR QUERY HERE'); 直接查询数据库,那么你需要使用 $this->db->escape('fileld_name') 语句进行转义,这样才安全。
escape函数实际上是调用的escape_str这个函数,只不过escape增加了一层对数据类型的判断,看到了没(注意:它可没判断数值类型的哟,所以说如果传入的数据是数值型的话,你得自己动手判断一下了),下面这两个东东就是进行转义的家伙了。

function escape($str)
{
if (is_string($str))
{
$str = "'".$this->escape_str($str)."'";
}
elseif (is_bool($str))
{
$str = ($str === FALSE) ? 0 : 1;
}
elseif (is_null($str))
{
$str = 'NULL';
}

return $str;
}

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;
}
 

5.无论如何你都必须要对数值型数据手动判断,这个得你自己做,比如用个 (int)之类的强制转换。

6. 对于使用 Active Record 操作的数据你可以偷懒不用 $this->db->escape('fileld_name') 转义了(事实上你如果你使用了反而会被多增加些引号之类的东西),因为它会帮你搞定,但数值型你还是要自己判断。

7. 如果你使用 Active Record 操作的数据,那么其实CI是在数据快要入数据库的时候进行转义的,所以在前面的很多地方你都看不到addslashes之类函数的身影,这样做也是有好处的你看看escape_str函数里对转义函数的判断就知道了。

8.上面我一再强调数值型数据必须得自己搞定,实际上如果你的SQL语句中对数值型加了单引号的话,应该问题不大,不过还是建议处理一下。

分享到:
评论

相关推荐

    codeigniter中文手册教程

    6. **安全与防护**: CodeIgniter包含XSS过滤、CSRF保护、输入验证等安全特性,有助于防止常见的Web攻击。 7. **错误处理与日志记录**: 强大的错误处理机制和日志记录功能,便于调试和问题定位。 8. **辅助函数...

    php敏捷开发框架Codeigniter

    3. **安全防护**:框架内置了防止SQL注入和跨站脚本攻击的安全措施,如活动记录(Active Record)查询班和XSS过滤器。 4. **简单的错误处理**:CodeIgniter提供了一套友好的错误报告机制,方便开发者快速定位和修复...

    CodeIgniter-2.2.6一键安装包

    3. **安全防护**:CodeIgniter包含一系列的安全机制,如XSS过滤、SQL注入预防和安全的CSRF保护,以确保应用免受常见攻击。 4. **数据库支持**:CodeIgniter的数据库抽象层支持多种数据库系统,包括MySQL、...

    CodeIgniter2.0中文手册.zip

    3. 安全性:CodeIgniter 2.0提供了安全措施,如XSS过滤、SQL注入防御,以及CSRF(跨站请求伪造)保护,确保应用程序免受常见Web攻击。 4. 错误处理与日志:强大的错误报告机制和日志记录功能,有助于开发者定位并...

    codeigniter 新闻发布系统下

    1. **安全防护**:CI提供了输入过滤、XSS防护等机制,以防止SQL注入和跨站脚本攻击。 2. **URL友好的路由**:CI允许自定义URL结构,使网站的URL更加清晰和可读。 3. **错误处理和日志记录**:CI提供错误处理机制和...

    CodeIgniter 1.7 professional development

    CodeIgniter内置了一系列的安全措施,包括输入过滤、防止SQL注入和跨站脚本攻击(XSS)等,帮助开发者构建更加安全的Web应用。 #### 7. 性能优化 由于其轻量级和高性能的特点,CodeIgniter非常适合构建高流量的Web...

    CodeIgniter-2.2-stable

    3. **安全与防护**:2.2版中包含了XSS(跨站脚本)过滤、SQL注入防护等安全特性,帮助开发者编写更安全的代码。此外,还有CSRF(跨站请求伪造)保护,防止恶意提交。 4. **数据库管理**:CodeIgniter提供了一个强大...

    CodeIgniter2.0

    CodeIgniter包含一系列的安全措施,如输入过滤、XSS清洁、CSRF保护等,确保应用程序的安全运行。 **九、错误处理与日志记录** CodeIgniter提供了详细的错误报告和日志记录功能,帮助开发者快速定位并解决问题。 **...

    CodeIgniter_2.1.1.zip

    安全方面,CodeIgniter 2.1.1包含了一套强大的输入过滤和输出 escaping 机制,防止SQL注入和跨站脚本攻击(XSS)。它还支持哈希和加密功能,用于用户密码存储和其他敏感数据的保护。 错误处理和日志记录也是...

    php敏捷开发框架CodeIgniter快速web应用开发详解

    10. **安全与性能**:CI内置了输入过滤、输出编码等功能,帮助防止SQL注入、跨站脚本攻击等安全问题。优化方面,CI提供了缓存机制、GZIP压缩和页面分块加载等策略,以提升应用性能。 11. **错误处理与日志**:CI有...

    CodeIgniter 或许是最好的讲解

    - **安全**(Security):提供XSS过滤、输入验证等功能,确保应用安全。 3. **数据库操作**:CodeIgniter有强大的数据库支持,提供了简单的API进行查询构建和数据库操作,支持多种数据库系统如MySQL、PostgreSQL等...

    精美图片网(CodeIgniter php)

    5. **安全与辅助函数**:CodeIgniter包含了一系列的安全类和辅助函数,如输入验证、XSS过滤、URL编码等,以确保应用安全。 6. **错误处理与日志**:CodeIgniter有内置的错误处理机制和日志记录功能,有助于调试和...

    CodeIgniter用户指南(版本1.7.2).chm

    框架内置了输入过滤和输出净化功能,确保用户提交的数据安全无虞。同时,它的轻量级设计和高效的查询缓存机制有助于减少服务器资源的消耗,提高网站的响应速度。 错误处理和调试工具在开发过程中至关重要。...

    使用PHP的MVP CRUD-使用框架CodeIgniter.zip

    - 对用户输入进行验证和过滤,确保数据安全。 - 应用CSRF(跨站请求伪造)保护,增强应用安全性。 - 使用CodeIgniter的助手函数和库,提高代码可读性和可维护性。 通过以上步骤,你可以使用PHP的CodeIgniter框架...

    wrox professional codeigniter

    《专业CodeIgniter》这本书是Wrox出版社推出的一本针对CodeIgniter框架的深度解析教程。CodeIgniter是一个流行的PHP框架,它以轻量级、高效能和易于学习的特点受到开发者的广泛欢迎。本书旨在帮助读者掌握...

    CI(CodeIgniter)离线手册

    3. **安全防护**:CI包含了各种安全机制,如XSS(跨站脚本)过滤、SQL注入预防、CSRF(跨站请求伪造)保护等,确保应用免受常见Web攻击。 4. **错误处理和日志记录**:CI具有友好的错误报告系统和日志记录功能,...

    PHP100教程2012版:CodeIgniter框架教程(4)第18讲 解压密码

    CodeIgniter框架教程(4)第18讲 解压密码》这一章节,不仅提供了关于如何在Web开发中使用PHP和CodeIgniter框架的基础知识,还深入探讨了文件加密和解压的高级技巧,对于希望提升自己在数据安全方面技能的开发者来说...

    用CodeIgniter开发新闻发布系统(下)

    使用预处理语句防止SQL注入,XSS过滤处理用户输入,确保系统安全。 在“第三讲:用CodeIgniter开发新闻发布系统(下)”中,可能详细介绍了以上部分或全部步骤,通过实际操作演示如何一步步实现这个功能齐全的新闻...

    php100:CodeIgniter框架教程(3)(第17讲)视频解压密码

    框架内置了一系列安全特性,如XSS过滤、SQL注入防护、CSRF防护等,保护应用免受常见的Web攻击。 ### 关于第17讲:视频解压密码 虽然标题和描述中提及的“视频解压密码”与CodeIgniter框架的直接技术内容关联不大,...

Global site tag (gtag.js) - Google Analytics