# 安全

本章介绍如何使用CmlPHP提供的工具去编写更安全的代码。

# 防注入

CmlPHP在db层防注入,对数据库的操作框架都已经做了防注入处理

# 用户数据输入

使用\Cml\Http\Input类进行处理,点击查看详细

# csrf

框架默认开启对非本站域名post数据的检查,只要是非本站域post名过来的数据都返回403,可在配置中修改过滤选项

'CHECK_CSRF' => 1,
//检查csrf跨站攻击 0、不检查,1、只检查post数据提交方式,2、get/post都检查 默认只检查post

当然这只是最基本过滤,最好是使用表单令牌或者验证码来防止csrf,表单令牌的使用很简单 配置文件中设置

'FORM_TOKEN'=> 1, //表单令牌 0不开启,1开启 默认不开启

然后在模板的中设置标签,框架会自动在其位置生成名称为CML_TOKEN的Input <input type="hidden" name="CML_TOKEN" value="xxxxx" /> 如:

<form method="post" action="">
    {{token}}
</form>

在控制器中使用\Cml\Secure::checkToken();检查令牌,通过返回true,不通过返回false

上面介绍了常见的安全过滤,更多的过滤方法参看\Cml\Secure

# 加密解密

框架中提供了\Cml\Encry加密解密类

# 加密接口
\Cml\Encry::encrypt($data, $key = null)
# 解密接口
\Cml\Encry::decrypt($data, $key = null)

WARNING

这边的key可以单独配置,如果没配置框架默认读取配置文件中auth_key配置的key。

使用\Cml\Http\Cookie处理cookie的时候默认加密key就是使用auth_key配置的key。所以如果有使用到\Cml\Encry或者\Cml\Http\Cookie都请修改auth_key配置的key