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 相关文章推荐
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
解析ajax事件的调用顺序
Jun 17 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
PHP简单留言本功能实现代码
Jun 09 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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
论建造顺序的重要性
2020/03/04 星际争霸
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
php实现留言板功能
2017/03/05 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
利用Python破解斗地主残局详解
2017/06/30 Python
Python----数据预处理代码实例
2019/03/20 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
python中字典增加和删除使用方法
2020/09/30 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
CK加拿大官网:Calvin Klein加拿大
2020/03/14 全球购物
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
施工人员岗位职责
2013/12/12 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
食品安全处置方案
2014/06/14 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
超级礼物观后感
2015/06/15 职场文书
婚礼答谢词范文
2015/09/29 职场文书
检讨书怎么写?
2019/06/21 职场文书