在 Yii 中在哪里转义用户输入?
我应该在将它们保存到数据库之前调用
CHtml::encode(strip_tags())
吗? 或者我应该在echo
之前在 View 中对它们进行编码?有没有办法在验证时自动对输入文本进行编码? [a-zA-Z0-9]* 验证是否是验证中过滤注入(inject)的最佳方式?
最佳答案
对于第一个,这是我个人的意见,但我会按照你说的去做:CHtml::encode(strip_tags())
在保存数据之前。之前这样做的主要优点是,如果您从不同的媒体(网站、API 等)获取数据,您将确保检索到的数据是安全的。
对于第二点,我不知道是否有一种特定的方法可以自动对输入文本进行编码,但是您可以使用 beforeValidate()
和 beforeSave()
模型中的方法来做到这一点!
为了 yii 的安全,我邀请你查看关于 writing secure yii applications 的 wiki
关于Yii和XSS,数据从哪里逃逸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14062477/