> 永远不要相信用户提交的数据!
## 安全开发指导
1. 参考ThinkPHP官方[安全指导](https://www.kancloud.cn/manual/thinkphp5/268461)
2. 过滤用户输入的内容,Tkview提供了html安全过滤方法`htmlpurifier()`
比如:`$html = htmlpurifier(request()->post('content'))`
或者:`$html = request()->post('content', '', 'htmlpurifier')`
也可以加在TP的默认过滤规则,如何设置默认过滤规则请参考ThinkPHP官方文档
3. 前端过滤可以使用`filterXSS()`
```
<script>
// apply function filterXSS in the same way
var html = filterXSS('<script>alert("xss");</scr' + 'ipt>');
alert(html);
</script>
```
更多用法,请参考:<https://github.com/leizongmin/js-xss/blob/master/README.zh.md>
> 以上方法仅作为安全辅助,没有一劳永逸的方法可以防止所有攻击。要做好数据检查,选用合适的过滤方法。
### 禁止访问敏感目录
为了安全考虑,可以将一些敏感目录设置为禁止访问。
【Nginx】
在Nginx配置文件中,加入以下规则
```
location ^~ /data {
deny all;
}
location ^~ /runtime {
deny all;
}
location ^~ /export {
deny all;
}
location ^~ /application {
deny all;
}
location ^~ /plugins {
deny all;
}
location ^~ /thinkphp {
deny all;
}
location ^~ /vendor {
deny all;
}
```
【Apache】
在框架根目录的.htaccess文件加入以下规则
```
RewriteRule ^data - [F,L]
RewriteRule ^runtime - [F,L]
RewriteRule ^export - [F,L]
RewriteRule ^application - [F,L]
RewriteRule ^plugins - [F,L]
RewriteRule ^thinkphp - [F,L]
RewriteRule ^vendor - [F,L]
```
完整内容
```
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
RewriteRule ^data - [F,L]
RewriteRule ^runtime - [F,L]
RewriteRule ^export - [F,L]
RewriteRule ^application - [F,L]
RewriteRule ^plugins - [F,L]
RewriteRule ^thinkphp - [F,L]
RewriteRule ^vendor - [F,L]
</IfModule>
```
- 序言
- 环境搭建
- 下载及安装
- 目录结构
- 基础表字段
- 模块开发
- 流程介绍
- 前台(home)
- 基类解析
- 功能模块
- 后台(admin)
- 基类解析
- 功能模块
- API构造器
- 基类解析
- 快速构建器(TKviews)
- 布局(layout)
- 设置页面标题(setPageTitle)
- 后台页面布局
- 菜单访问方法(getMenu)
- 侧边菜单(JSON)
- 布局访问方法(layout)
- 设置顶部菜单(setTopmeun)
- 前台页面布局
- 表格(table)
- 设置页面标题
- 设置页面提示信息
- 设置列表头信息
- 添加单列
- 添加多列
- 列名类型
- 列名属性
- 设置表格数据
- 显示第一列多选
- 引入js文件
- 引入css文件
- 设置模版路径
- 设置分页
- 设置当前tab
- 表单(form)
- setPageTitle('页面标题')
- setPageTips('提示信息' [,'提示类型'])
- 设置Tab按钮列表
- 侧栏(aside)
- 微信公众号
- 微信小程序
- 插件开发
- 变量参考
- 函数参考
- 其他杂项
- 安全相关
- 更新日志
- 升级指导
- 常见问题
- 关于文档