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分页显示制作详细讲解
Nov 19 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
php 保留字列表
Oct 04 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
PHP session 会话处理函数
Jun 06 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
PHP超全局变量实现原理及代码解析
Sep 01 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异步调用socket实现代码
2012/01/12 PHP
php实现短信发送代码
2015/07/05 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(一)
2017/05/11 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python实现五子棋游戏
2019/06/18 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python代码中怎么换行
2020/06/17 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
销售经理竞聘书
2014/03/31 职场文书
骨干教师考核方案
2014/05/09 职场文书
基层党员公开承诺书
2014/05/29 职场文书
酒店管理求职信
2014/06/09 职场文书
经营目标管理责任书
2014/07/25 职场文书
群众路线表态发言材料
2014/10/17 职场文书
毕业典礼邀请函
2015/01/31 职场文书
行政上诉状范文
2015/05/23 职场文书
2016年寒假家长评语
2015/10/10 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python