boaPHP开发手册v5.5

安全防御

详情参见 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'
	]