yii1-security-auditlisted
Install: claude install-skill hmj1026/dhpk
# Yii 1.1 框架安全審計(yii1-security-audit)
分析 Yii 1.1 專案的框架機制與配置踩坑,重點覆蓋:
- 訪問控制:`filters()` / `accessRules()` / `CAccessControlFilter` 規則與覆���範圍
- RBAC:`Yii::app()->user->checkAccess()` / `getLevel()` 鑑權完整性與物件歸屬
- CSRF:`protected/config/main.php` 的 `request` 元件設定
- 輸出編碼:views 是否使用 `CHtml::encode()`;危險原樣輸出
- SQL 注入:`createCommand("....$var")` 字串拼接;`CDbCriteria` 未綁定參數
- Mass Assignment:`$model->attributes = $_POST[...]` 配合 `rules()` / scenario 安全邊界
- 上傳安全:`CUploadedFile` 的副檔名白名單、MIME 檢查、儲存位置
- Session 安全:`cookieParams` httponly / secure 設定
## 輸入
用戶提供:
- `source_path`:Yii 1.1 專案根目錄
可選:
- `output_path`:輸出目錄(預設 `{source_path}_audit`)
## 輸出目錄
```
{output_path}/framework_audit/
yii1_{timestamp}.md
```
## 框架識別(必做)
必須給出 Yii 1.1 識別證據點(不允許空口斷言):
| 證據類型 | 查找目標 |
|---------|---------|
| 入口腳本 | `protected/yiic.php` 或根目錄 `index.php` 含 `Yii::createWebApplication` |
| 保護目錄 | `protected/controllers/`、`protected/models/`、`protected/views/` 均存在 |
| 框架類別 | 繼承 `CController`、`CActiveRecord`、`CFormModel` |
| 設定檔 | `protected/config/main.php` 包含 `components` 陣列 |
| 非 Yii2 確認 | 沒有 `composer.json` 的 `yiisoft/yii2`、沒有 `web/index.php` |
**若無法找到以上至少 3 項證據,停止審計並說明原因。**
## 風險類型映射(必做)
每條發現都必須寫明:
- 通用類型碼:`AUTH` / `CSRF` / `XSS` / `SQL` / `CFG` / `LOGIC` / `FILE`
- 映射原因(一句話)
## 必審清單(必做:逐項檢查並輸出結果)
### 1) AccessControl 鑑權規則正確性(AUTH)
**搜尋目標:**
- `protected/components/Controller.php` 的 `filters()` / `filterCheckPermission()` / `filterAccessControl()`
- 各 Controller 的 `filters()` 與 `accessRules()` 是否存在及覆