XSS意味着跨站点脚本。 CodeIgniter带有XSS过滤安全性。此过滤器将阻止任何恶意的JavaScript代码或任何其他试图劫持cookie并进行恶意活动的代码。要通过XSS过滤器过滤数据,请使用 xss_clean()方法,如下所示。
$data=$this->security->xss_clean($data);
仅在提交数据时才应使用此函数。可选的第二个布尔参数也可以用于检查镜像文件是否受到XSS攻击。这对于文件上传函数很有用。如果其值为true,则表示图像是安全的,否则就不是。
SQL注入是对数据库查询的攻击。在PHP中,无涯教程使用 mysql_real_escape_string()函数和其他技术来防止这种情况,但是CodeIgniter提供了内置函数和库来防止这种情况。
可以通过以下三种方式防止CodeIgniter中的SQL注入-
<?php $username=$this->input->post('username'); $query='SELECT * FROM subscribers_tbl WHERE user_name='. $this->db->escape($email); $this->db->query($query); ?>
$this->db->escape() 函数自动在数据周围添加单引号,并确定数据类型,使其只能转义字符串数据。
<?php $sql="SELECT * FROM some_table WHERE id=? AND status=? AND author=?"; $this->db->query($sql, array(3, 'live', 'Rick')); ?>
在上面的示例中,问号(?)将由query()函数的第二个参数中的数组替换。以这种方式构建查询的主要优点是,将自动转义产生安全查询的值。 CodeIgniter引擎会自动为您执行此操作,因此您不必记住它。
<?php $this->db->get_where('subscribers_tbl',array ('status'=> active','email' => 'info@arjun.net.in')); ?>
使用活动记录,每个数据库适配器都会生成查询语法。它还允许更安全的查询,因为这些值会自动转义。
在生产环境中,无涯教程通常不希望向用户显示任何错误消息。如果在开发环境中将其启用以进行调试是很好的。这些错误消息可能包含一些信息,出于安全原因,不应该向站点用户显示这些信息。
有三个与错误相关的CodeIgniter文件。
不同的环境需要不同级别的错误报告。默认情况下,开发将显示错误,但测试和实时运行将隐藏它们。在CodeIgniter的根目录中有一个名为 index.php 的文件,用于此目的。如果将零作为 error_reporting()函数的参数传递,那么它将隐藏所有错误。
即使您关闭了PHP错误,MySQL错误仍然处于打开状态。您可以在 application/config/database.php 中将其关闭。如下所示,将 $db 数组中的 db_debug options设置为 FALSE 。
链接:https://www.learnfk.comhttps://www.learnfk.com/codeigniter/codeigniter-security.html
来源:LearnFk无涯教程网
$db['default']['db_debug']=FALSE;
另一种方法是将错误转移到日志文件。因此,它不会在网站上显示给用户。只需将 $config 数组中的 log_threshold 值在 application/cofig/config.php 文件中设置为1,如下所示。
$config['log_threshold']=1;
CSRF代表跨站点请求伪造。您可以通过在 application/config/config.php 文件中启用此攻击来防止此攻击,如下所示。
$config['csrf_protection']=TRUE;
使用 form_open()函数创建表单时,它将自动插入CSRF作为隐藏字段。您还可以使用 get_csrf_token_name()和 get_csrf_hash()函数手动添加CSRF。 get_csrf_token_name()函数将返回CSRF的名称,而 get_csrf_hash()将返回CSRF的哈希值。
可以在每次提交时重新生成CSRF令牌,或者您也可以在CSRF Cookie的整个生命周期中保持相同的状态。通过在键为" csrf_regenerate" 的配置数组中设置值 TRUE ,将重新生成令牌,如下所示。
$config['csrf_regenerate']=TRUE;
您还可以通过使用键" csrf_exclude_uris" 在配置数组中将CSRF保护中的URL列入白名单,如下所示。您也可以使用正则表达式。
$config['csrf_exclude_uris']=array('api/person/add');
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)