codeigniter 中的安全性

Posted

技术标签:

【中文标题】codeigniter 中的安全性【英文标题】:Security in codeigniter 【发布时间】:2013-11-23 02:09:44 【问题描述】:

CodeIgniter 如何比核心 php 编码更安全。 CodeIgniter 处理了哪些安全问题,如果不编写任何特殊的安全代码,我们就无法从核心 PHP 中获得。为了防止SQL注入我们必须使用mysql_real_scape_string()

【问题讨论】:

ellislab.com/codeigniter%20/user-guide/general/security.html mysql_real_escape_string 已被弃用,因此不应将其用于新代码。 它是用 PHP 编写的。所以它不能提供在 PHP 中不可能实现的特殊安全功能!它是一个框架,框架通常可以轻松使用任何东西,包括安全功能。 @LawrenceCherone 你是对的,因为 mysql 已被弃用。但是如果你还用mysql,你也得用mysql_real_escape_string 【参考方案1】:

例子:-

$data = array('NAME' => $NAME,'EMAIL' => $EMAIL, 'PASSWORD' => $PASSWORD);              
$clean = $this->security->xss_clean($data);

【讨论】:

这是如何试图回答这个问题的并不明显 这对手头的问题没有任何意义。【参考方案2】:

http://ellislab.com/codeigniter%20/user-guide/libraries/security.html

$data = $this->security->xss_clean($data);

如果您希望过滤器在每次遇到 POST 或 COOKIE 数据时自动运行,您可以通过打开 application/config/config.php 文件并进行设置来启用它:

$config['global_xss_filtering'] = TRUE;

【讨论】:

【参考方案3】:

Codeigniter 和 Zend、cake、Yii 等其他流行框架都提供了方法和结构,在一定程度上迫使开发人员编写能够抵抗常见漏洞的代码,例如跨站脚本 XSS、SQL 注入和其他黑客。但一切都取决于开发人员。框架只会提供一个经过良好测试的结构来构建你的应用程序。如果您编写核心 php,在某些情况下,您可以编写更安全的代码。但这需要非常熟练的开发人员。所以在大多数情况下,使用框架肯定会给你带来优势。

【讨论】:

【参考方案4】:

我听说 codeigniter 停止了它的开发,而且我知道 codeigniter 仍在使用 mysql 而不是 mysqli 函数来提高后端的安全性。

为了防止 mysql 在 codeigniter 中注入,我通常在我的模型中使用绑定,如下所示:

$sql = "SELECT * FROM some_table WHERE username = ? AND password= ?";

$this->db->query($sql, array($username, $Encrypted_password)); 

使用绑定的好处是值会自动转义,从而产生更安全的查询。

这个应用程序框架对我来说还是不错的。

【讨论】:

只要您使用 Active Record,CI 就会始终转义查询值。绑定并不比->where() 更安全。因为它仍然是处理这两者的 Active Record。 还有各种不同的数据库驱动程序可用于 CI。另外,mysql 适配器仍然可用的原因是因为他们试图保持与 PHP4 的向后兼容性。 Codeigniter的开发并未停止,V3正在开发中,目前稳定版本支持mysqli。

以上是关于codeigniter 中的安全性的主要内容,如果未能解决你的问题,请参考以下文章

CI框架获取post和get参数 CodeIgniter

是“root web server”和localhost一样吗?安装CodeIgniter

PHP mcrypt_create_iv 返回问号和不正确的长度 - CodeIgniter

codeigniter 中的安全性

Codeigniter 2 $this->db->join 与 $this->db->update 一起使用

使用 CodeIgniter 获取 URL 中的参数