directory search
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
characters

SecurityClass包含帮助您创建安全应用程序的方法,用于处理安全输入数据。

  • XSS滤波

  • 跨站点请求伪造%28CSRF%29

  • 类引用

XSS滤波

CodeIgniter附带了一个跨站点脚本预防过滤器,它寻找常用的技术来触发JavaScript或其他类型的代码,这些代码试图劫持cookie或做其他恶意的事情。如果遇到任何不允许的情况,则通过将数据转换为字符实体来安全地呈现。

若要通过XSS筛选器筛选数据,请使用xss_clean()方法:

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

可选的第二个参数,是[医]图像,允许使用此函数测试图像是否可能受到XSS攻击,这对于文件上传安全性非常有用。如果第二个参数设置为true,而不是返回修改过的字符串,则如果图像安全,则返回true;如果图像包含浏览器可能试图执行的恶意信息,则返回false。

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

重要

如果您想过滤HTML属性值,请html_escape()改为使用!

跨站请求伪造(CSRF)

您可以通过更改application/config/config.php以下列方式存档:

$config['csrf_protection'] = TRUE;

如果您使用表单助手,然后form_open()将自动在窗体中插入隐藏的CSRF字段。如果没有,那么您可以使用get_csrf_token_name()get_csrf_hash()

$csrf = array(        'name' => $this->security->get_csrf_token_name(),        'hash' => $this->security->get_csrf_hash());...<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" />

令牌可以在每次提交时重新生成(默认),也可以在CSRF Cookie的整个生命周期内保持不变。默认的令牌重新生成提供了更严格的安全性,但可能会导致其他令牌无效(后退/前进导航,多个选项卡/窗口,异步操作等)的可用性问题。您可以通过编辑以下配置参数来改变此行为

$config['csrf_regenerate'] = TRUE;

选择URI可以通过csrf保护列入白名单(例如期望外部发布内容的API端点)。您可以通过编辑'csrf_exclude_uris'配置参数来添加这些URI:

$config['csrf_exclude_uris'] = array('api/person/add');

正则表达式也被支持(不区分大小写):

$config['csrf_exclude_uris'] = array(        'api/record/[0-9]+',        'api/title/[a-z]+');

类引用

class CI_Securityxss_clean($str[, $is_image = FALSE])

参数:

$ str(mixed) - 输入字符串或字符串数组

返回:

XSS清理数据

返回类型:

  • $ strmixed) - 输入字符串或字符串数组返回:XSS干净数据返回类型:混合尝试从输入数据中除去XSS漏洞并返回已清理的字符串。如果可选的第二个参数设置为true,如果图像可以安全使用,它将返回布尔值TRUE;如果检测到恶意数据,则返回FALSE。重要此方法不适用于过滤HTML属性值!html_escape()改为使用。sanitize_filename($str[, $relative_path = FALSE])参数:$ str(string) - 文件名/路径$ relative_path(bool) - 是否保留文件中的任何目录pathReturns:清理文件名/路径返回类型:字符串

  • $ strstring) - 文件名/路径

  • $ relative_pathbool) - 是否保留文件路径中的任何目录

Returns:  Sanitized file name/path
Return type:  string
Tries to sanitize filenames in order to prevent directory traversal attempts and other security threats, which is particularly useful for files that were supplied via user input.

$ filename = $ this-> security-> sanitize_filename($ this-> input-> post('filename'));

如果用户输入可以接受相对路径,例如file / in / some / approved / folder.txt,则可以将第二个可选参数设置$relative_path为TRUE。

$ filename = $ this-> security-> sanitize_filename($ this-> input-> post('filename'),TRUE);

get_csrf_token_name()

返回:

CSRF令牌名称

返回类型:

get_csrf_hash()

返回:

CSRF哈希

返回类型:

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

参数:

$ str(string) - 输入字符串$ charset(string) - 输入字符串的字符集

返回:

实体解码的字符串

返回类型:

  • $ strstring) - 输入字符串

  • $ charset字符串) - 输入字符串的字符集

Returns:  Entity-decoded string
Return type:  string
This method acts a lot like PHP’s own native `html_entity_decode()` function in ENT\_COMPAT mode, only it tries to detect HTML entities that don’t end in a semicolon because some browsers allow that.

如果$charset参数为空,则配置$config['charset']价值将被使用。

get_random_bytes($length)

参数:

$ length(int) - 输出长度

返回:

随机字节的二进制流或失败时为FALSE

返回类型:

  • $ lengthint) - 输出长度

Returns:  A binary stream of random bytes or FALSE on failure
Return type:  string
A convenience method for getting proper random bytes via `mcrypt_create_iv()`, `/dev/urandom` or `openssl_random_pseudo_bytes()` (in that order), if one of them is available.

用于生成CSRF和XSS令牌。

输出不一定是加密安全的,这是最好的尝试。

Previous article: Next article: