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和ACCESS写聊天室(八)
Oct 09 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
php引用返回与取消引用的详解
Jun 08 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
PHP生成压缩文件实例
Feb 07 PHP
使用php实现从身份证中提取生日
May 09 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
PHP实现添加购物车功能
Mar 06 PHP
php支付宝APP支付功能
Jul 29 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 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
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
python3中rank函数的用法
2019/11/27 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python中有帮助函数吗
2020/06/19 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
法学专业个人求职信
2013/09/26 职场文书
给同学的道歉信
2014/01/16 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
任命书怎么写
2014/06/04 职场文书
消防工作实施方案
2014/06/09 职场文书
中药学自荐信
2014/06/15 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
未中标通知书
2015/04/17 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python
Spring Boot 实现 WebSocket
2022/04/30 Java/Android