Yii2 安全最佳实践
基本思想
- 过滤输入
- 转义输出
避免SQL注入
- 预处理(参数绑定)
- 指定列的名字,或者表的名字:只允许预定义的枚举值;表名或者列名进行转义([[column]], {{table}})
防止XSS
- 对于输出纯文本
<?= \yii\helpers\Html::encode($username) ?>
- 对于输出HTML
<?= \yii\helpers\HtmlPurifier::process($description) ?>
防止CSRF
- GET请求不改变应用状态
- 保持crsfValidation开启
防止文件暴露
- webroot 目录指向包含有 index.php 的 web 目录,屏蔽其他目录的访问