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 相关文章推荐
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
php写的简易聊天室代码
Jun 04 PHP
逆序二维数组插入一元素的php代码
Jun 08 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
PHP 接入支付宝即时到账功能
Sep 18 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 23 PHP
tp5.1 框架路由操作-URL生成实例分析
May 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
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
python面向对象 反射原理解析
2019/08/12 Python
Python笔记之代理模式
2019/11/20 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
《与象共舞》教学反思
2014/02/24 职场文书
合伙经营协议书范本
2014/04/18 职场文书
岗位职责说明书模板
2014/07/30 职场文书
2015年教师新年寄语
2014/12/08 职场文书
公司酒会致辞
2015/07/30 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js