我对ZF安全没有任何概念.在数据库上操作时是否必须使用Filter?也许绑定就足够了?这个怎么样:
$users->update($data, 'id=1');
应该以某种方式过滤$ data数组吗?随意写下你对这个问题的了解.
你能给一些关于ZF安全性的文章链接(主要是关于SQL注入和XSS)吗?
简短回答
虽然ZF采取并提供了一些措施来保护您的应用程序,但您仍应采用与Zend Framework相同的预防措施.
关于您的代码段,请参阅参考指南中有关Zend_Db的章节:
默认情况下,使用参数插入数据数组中的值.这可以降低某些类型的安全问题的风险.您不需要对数据数组中的值应用转义或引用.
这并不意味着您不必担心安全问题.例如,对于上面的Update方法
第三个参数是一个包含SQL表达式的字符串,该表达式用作要更改的行的条件.此参数中的值和标识符不会被引用或转义.您有责任确保将任何动态内容安全地插入到此字符串中.有关帮助您执行此操作的方法,请参阅引用值和标识符.
注意,因为你Zend_Db_Table
明显使用,第三个参数是第二个参数.在内部,表实例将委托对db适配器的调用,第一个param是表实例的tablename.
关于Zend_View和XSS攻击向量:
Zend_View带有一组初始的辅助类,其中大部分与表单元素生成有关,并自动执行适当的输出转义.
同样,大多数并不意味着所有.Zend_View
确实提供了Zend_View :: escape()来帮助你清理输出,但这没什么特别的.