CI框架的安全性分析


Posted in PHP onMay 18, 2016

本文分析了CI框架的安全性。分享给大家供大家参考,具体如下:

用过ci框架的人都知道,ci框架能大大缩短你的代码。其实,ci框架更能提高你网站的安全性。

防止对数据库的攻击

数据输入可能引发许多问题。因为 HTML 和数据库的限制,数据中总包含特定的符号—举例来说,省略符号和引号—可能导致你的数据库遭到攻击,最终得到你无法预料的结果。

解决方案是在把这些数据存入数据库前对这些数据进行相关处理。这样做会浪费一些系统时间,增加一些额外编码。

CI 的表单辅助函数会自动地完成这些工作。因此,当你编写一个输入框时:

echo form_input('username', 'johndoe');

CI 也隐式地执行下列校验函数:

function form_prep($str = '')
{
  if ($str === '')
  {
    return '';
  }
  $temp = '__TEMP_AMPERSANDS__';
  // Replace entities to temporary markers so that
  // htmlspecialchars won't mess them up
  $str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
  $str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
  $str = htmlspecialchars($str);
  // In case htmlspecialchars misses these.
  $str = str_replace(array("'", '"'), array("'", """), $str);
  // Decode the temp markers back to entities
  $str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
  $str = preg_replace("/$temp(\w+);/","&\\1;",$str);
  return $str;
}

上述函数捕获像“&”这样的特殊字符,以便在你的页面提交时不会造成混乱。你应该知道,有些字符会引起问题。

并不是所有的用户都会中规中矩的输入符合要求的信息,你也不可能知道使用浏览器输入信息的是什么人,他们在想什么,做什么。你可以使用 CI 来防止输入不符合要求的信息。当然,你大可不必知道 CI 是如何在幕后为你做到这一切的,你只需要简单地输入如下代码:

echo form_input('username', 'johndoe');

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中创建并处理图象
Oct 09 PHP
社区(php&&mysql)四
Oct 09 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
php字符编码转换之gb2312转为utf8
Oct 28 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
php检查是否是ajax请求的方法
Apr 16 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
wordpress自定义标签云与随机获取标签的方法详解
Mar 22 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
php写入txt乱码的解决方法
Sep 17 PHP
PHP的swoole扩展安装方法详细教程
May 18 #PHP
CI框架支持$_GET的两种实现方法
May 18 #PHP
CI框架中$this->load->library()用法分析
May 18 #PHP
CI框架数据库查询之join用法分析
May 18 #PHP
CI框架简单邮件发送类实例
May 18 #PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
May 18 #PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 #PHP
You might like
解析strtr函数的效率问题
2013/06/26 PHP
php导出生成word的方法
2015/12/25 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
详解php中的implements 使用
2017/06/13 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
PHP面向对象程序设计之对象的遍历操作示例
2019/06/12 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JS & JQuery 动态添加 select option
2016/06/08 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
Python实现FM算法解析
2019/06/18 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
外语系毕业生自荐信范文
2013/12/16 职场文书
运动会领导邀请函
2014/01/10 职场文书
房地产广告策划方案
2014/05/15 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2016年情人节广告语
2016/01/28 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书