> 永遠不要相信用戶提交的數據!
## 安全開發指導
1. 參考ThinkPHP官方[安全指導](http://www.hmoore.net/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)
- 微信公眾號
- 微信小程序
- 插件開發
- 變量參考
- 函數參考
- 其他雜項
- 安全相關
- 更新日志
- 升級指導
- 常見問題
- 關于文檔