CodeIgniter安全 CodeIgniter国际化 XSS预防 XSS意味着跨站点脚本。CodeIgniter带有XSS过滤安全性。此过滤器可防止任何恶意JavaScript代码或任何其他试图劫持cookie并执行恶意活动的代码。要通过XSS过滤器过滤数据,请使用如下所示的 xss_clean() 方法。 $data = $this->security->xss_clean($data); 只有在您提交数据时才应使用此功能。可选的第二个布尔参数也可用于检查图像文件是否存在XSS攻击。这对文件上传功能很有用。如果它的值是真的,意味着图像是安全的而不是其他。 SQL注入预防 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')); ?> 使用活动记录,查询语法由每个数据库适配器生成。它还允许更安全的查询,因为这些值会自动跳转。 隐藏PHP错误 在生产环境中,我们通常不希望向用户显示任何错误消息。如果在开发环境中为调试目的而启用它,那就很好。这些错误消息可能包含一些信息,出于安全原因,我们不应该向站点用户显示这些信息。 有三个CodeIgniter文件与错误相关。 PHP错误报告级别 不同的环境需要不同级别的错误报告。默认情况下,开发将显示错误,但测试和实时会隐藏它们。CodeIgniter的根目录中有一个名为 index.php 的文件,用于此目的。如果我们将0作为参数传递给 error_reporting() 函数,那么它将隐藏所有的错误。 数据库错误 即使您关闭了PHP错误,MySQL错误仍然是开放的。你可以在 application / config / database.php中 关闭它。将 $ db 数组中的 db_debug 选项设置为 FALSE ,如下所示。 $db['default']['db_debug'] = FALSE; 错误日志 另一种方法是将错误传输到日志文件。所以,它不会显示给网站上的用户。只需将 application config / cofig / config.php 文件中的 $ config 数组中的 log_threshold 值设置为1,如下所示。 $config['log_threshold'] = 1; CSRF预防 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的整个生命周期中保持一致。通过设置值 TRUE ,在配置数组中使用键 'csrf_regenerate' 将重新生成令牌,如下所示。 $config['csrf_regenerate'] = TRUE; 您还可以通过使用密钥 'csrf_exclude_uris' 将其设置在config数组中,将CSRF保护的URL列入白名单,如下所示。你也可以使用正则表达式。 $config['csrf_exclude_uris'] = array('api/person/add'); 密码处理 许多开发人员不知道如何在Web应用程序中处理密码,这可能是众多黑客发现进入系统非常容易的原因。在处理密码时应该注意以下几点 - 不要以纯文本格式存储密码。 始终哈希你的密码。 不要使用Base64或类似的编码来存储密码。 不要使用像MD5或SHA1这样的弱散列算法。只能使用强密码散列算法,如用于PHP自己的密码散列函数的BCrypt。 切勿以纯文本格式显示或发送密码。 不要对用户的密码进行不必要的限制。 CodeIgniter国际化