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 相关文章推荐
利用static实现表格的颜色隔行显示
Oct 09 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
PHP实现的数据对象映射模式详解
Mar 20 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
phpstudy后门rce批量利用脚本的实现
Dec 12 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
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
短信提示使用 特效
2007/01/19 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
python导入时小括号大作用
2017/01/10 Python
python读取xlsx的方法
2018/12/25 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python 公共方法汇总解析
2019/09/16 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
VC++笔试题
2014/10/13 面试题
城建学院毕业生自荐信
2014/01/31 职场文书
年终奖发放方案
2014/06/02 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书