Zend framework Zend_框架中的转义输入数据
你好Zend framework Zend_框架中的转义输入数据,zend-framework,zend-form,sql-injection,Zend Framework,Zend Form,Sql Injection,你好 我想在Zend_Framework中保存行时保护我的数据库: function addController() { .... if ($form->isValid($_POST)) { addRecods($form->getValues()); } } class DbManager extends Zend_Db_Table_Abstract ... function addRecords(array $array) { $row = $this
我想在Zend_Framework中保存行时保护我的数据库:
function addController() {
....
if ($form->isValid($_POST)) {
addRecods($form->getValues());
}
}
class DbManager extends Zend_Db_Table_Abstract
...
function addRecords(array $array) {
$row = $this->createRow();
$row->field1 = $this->field_from_form1;
$row->field2 = $this->field_from_form2;
....
$row->save();
}
如何在addRecords
函数中更好地从数组中转义输入数据?谢谢大家! 据我所知,你做这件事的方法是正确的。如果您的表单是使用
Zend_表单
创建的,您可以在表单元素上添加过滤器
和验证器
我创建的每个表单元素都会自动获取StripTags
(删除HTML标记)和StringTrim
(删除不需要的空白)过滤器。如果需要允许HTML,则需要将StripTags
配置为接受特定的标记和属性
除此之外,使用验证程序将捕获大部分恶意内容。如果您有带有数值的单选按钮,则可以添加数字
验证器。对于字符串,Alnum
似乎给了我一些带有重音(utf8)字符串的奇怪结果,但是如果你期望基本ASCII,它可能是亚军
使用Zend\u Form::isValid()
将检查所有验证器是否正常,使用Zend\u Form::getValues()
将自动触发所有输入过滤器。由于您已经这样做了,您可能只需要添加适当的过滤器
和验证器
使用Zend Framework
的数据库工具将为您构建一个安全查询的其余部分,以避免引号问题使用Zend\u DB\u Table\u Row::save()
函数,内部使用Zend\u DB\u Adapter\u Abstract::insert()
函数保存数据。依次为您引用数据
如果需要构建自己的sql查询,Zend_Db_适配器类提供了几个引用函数供您使用。您可以在此处了解更多信息:您的表单是通过Zend_表单组件创建的吗?谢谢!在类Zend_Db_Adapter_Abstract中回答这个问题后,我发现了这个特性:公共函数insert($table,array$bind){……foreach($col=>$val){$cols[]=$this->quoteIdentifier($col,true);