📜  CodeIgniter安全类

📅  最后修改于: 2021-01-01 03:37:15             🧑  作者: Mango

CodeIgniter安全等级

CodeIgniter包含安全性类方法,这些方法将有助于创建安全的应用程序并处理输入数据。方法如下。

  • XSS过滤
  • CSRF(跨站伪造)
  • 类参考

XSS过滤

XSS代表跨站点脚本。它用于禁用JavaScript或其他试图劫持cookie并执行其他类型的恶意行为的代码。当它遇到任何有害的东西时,通过将数据转换为字符实体来使其安全。

XSS过滤使用xss_clean()方法来过滤数据。

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

有一个可选的第二个参数is_image,用于测试映像是否受到XSS攻击。当此参数设置为TRUE时,它不返回更改后的字符串,相反,如果图像是安全的,则返回TRUE;如果包含恶意信息,则返回FALSE。

if ($this->security->xss_clean($file, TRUE) === FALSE)
    {
        //file failed in xss test
    }

CSRF(跨站伪造)

要启用CSRF,请在application / config / config.php文件中进行以下设置。

$config['csrf_protection'] = TRUE;

如果您使用的是表单帮助器,则一个隐藏的csrf字段将自动插入到form_open()/字段中。

否则,您可以使用手动添加它,

get_csrf_token_name() (返回csrf的名称)和

get_csrf_hash() (它返回csrf的值)。

生成的令牌可以在CSRF Cookie的整个生命周期中保持不变,也可以在每次提交时重新生成。令牌的默认生成提供了更好的安全性,但是由于其他令牌(例如多个选项卡/窗口,异步操作等)变得无效,因此也存在可用性方面的顾虑。可以在application / config / config.php文件中设置再生行为,如下所示。

$config['csrf_regenerate?] = TRUE;

类参考

Class CI_Security                
xss_clean ($str [, $is_image = FALSE])

参数-$ str(混合)?输入字符串或字符串数组

返回-XSS干净数据

返回类型-混合

从输入数据中删除XSS漏洞并返回干净的字符串。

Sanitize_filename ($str [, $relative_path = FALSE])

参数-$ str(字符串)?文件名/路径

$ relative_path(布尔)? tp是否在文件路径中保留任何目录

返回-清理的文件名/路径

返回类型-字符串

它通过清理文件名来防止目录遍历和其他安全威胁。它主要用于通过用户输入提供的文件。

Entity_decode (($str [, $charset = NULL])

参数-$ str(字符串)?输入字符串

$ charset(字符串)?输入字符串的字符集

返回-实体解码的字符串

返回类型-字符串

它尝试检测不以分号结尾的HTML实体,因为某些浏览器允许这样做。

$ charset参数保留为空,然后将使用$ config ['charset']中的配置值。

Get_random_bytes ($length)

参数-$ length(int)?输出长度

返回-失败时为随机字节或FALSE的二进制系统。

返回类型-字符串

它用于生成CSRF和XSS令牌。