安全防御
详情参见 security类
cors
跨域请求授权,配置指定合法源,禁止非法源的请求,比如ajax跨域请求。若想使用该功能仅需在config.php中配置CORS,无需其他手动操作
'CORS' => [
'origin' => 'http://boasoft.top,https://boasoft.cn:8080'
]
csrf
跨站访问伪造防御,在一个页面中使用create()生成token并自动存储在cookie或seesion中,然后在另一个页面中使用validate()进行校验,以确定是否为站内合法的页面操作,支持以下校验方式:
- csrf_type=0:不做校验,关闭CSRF防御
- csrf_type=1:前端方式,token自动存于cookie中,由cookie自动传送到后端进行校验
- csrf_type=2:后端方式,token自动存于session中,在后端自动进行校验,无需前端传送
- csrf_type=3:混合方式,token自动存于session中,需要通过前端表单域(CSRF-TOKEN)或http请求头(X-CSRF-TOKEN)手动传送到后端进行校验
// 在一个页面设置,csrf_type为1和2时,这样就行了
$token = boa::security()->create();
//csrf_type=3时,还需要将$token放在表单或http头中
echo '<input type="hidden" name="CSRF-TOKEN" value="'. $token .'">';
// 在另一个页面校验,确定操作来自前一页面
boa::security()->validate();
表单域的名称 CSRF-TOKEN 可以由 csrf_key 来配置
xss
跨站脚本攻击防御,对用户提交的数据进行脚本过滤后入数据库,避免含有javascript代码的内容在页面上展示时被浏览器执行,从而收集用户隐私信息或执行恶意代码等
// 尤其是允许含有HTML标签的内容,对其进行xss过滤
$content = boa::security()->xss($this->content);
或者在变量自动验证规则里配置(推荐)
'content' => [
'label' => '内容',
'check' => 'required',
'filter' => 'xss'
]