Zend getRequest () params otomatik süzgeç için bir yolu var mı?

4 Cevap php

Gerçekten ben yoksa her getRequest-> GetParam ('x') sonra benim kod Zend filtreyi aramak istemiyorum. Sihirli getRequest içindeki her şeyi filtreleme tembel bir yolu var mı?

Edit: When I say filter, I mean, escapting tags, cleaning out the XSS, and escaping any sql escape characters.

yani:

$myVar = $this->getRequest()->getParam('x');
filter the variable, escape sql stuf... etc

Standart nedir? Bunu nasıl yapıyorsun?

4 Cevap

Lütfen durumla başa çıkmak için birkaç yolu vardır.

Her şeyden önce, tek seferde params alabilirsiniz:

$params = $this->_request->getParams(); //_request is equivalent to getRequest()

Yani tüm params'ı filtre tembel bir yolu tüm alanları anlamına gelir, sizin filtreleri bildirirken * kullanmak olacaktır, ve gibi görünecektir:

$filters = array('*' => array('StringTrim','HtmlEntities','StripTags'));
$input = new Zend_Filter_Input($filters,$validators,$params);
if($input->isValid()) {
     //blah blah blah
}

Bu request nesnesi, hem de filters hakkında daha fazla bilgi gerekir, input filters ve validators.

karim79 cevabı bir dizi params kapma kapsar.

Genellikle verileri temizlemek için bir istek bazında Zend_Filter gerekmez.

Eğer bir görünümde veri çıkışı sakınmalısınız XSS önlemek için:

$this->escape($someUserSuppliedData)

ve bu ekleme ve güncelleme gibi Zend_Db bazı yöntemler ile uğraşırken sizin için veri teklif edecek. Sorguları oluşturarak zaman elle quote gibi Zend_Db işlevleri kullanabilirsiniz

Tek yolu, bunu her şekilde yapmaktır.

  • (karim79 tarafından yukarıda belirtildiği gibi) depolandıkları veya (Int döküm, StripTags ile etiketleri sıyırma tarafından nasıl aranması gerektiğini şeyleri süzmek için Zend_Filter_Input kullanmak, StringTrim, vb), doğrulama gerektiğinde doğrulayarak - muhtemelen, vb db arama komplikasyonları önlemek için çıkış yapılmalıdır beri htmlentitiesi değil Alanlar ayrı ayrı çoğu valide / filtre edilmekte edilmelidir.

  • Her zaman (? tutucular ile Zend_Db_Select) parametreli sorgular kullanmak, ya da en azından db kaçış fonksiyonlarını kullanın

  • (-> $this->escape() Zend_View_Helper_Escape) gibi tüm gerekli çıkış için dizayn edildi.

Belki getRequest () yöntemi aşırı ve daha sonra yeni oluşturulan yöntemin isteği nesne içindeki filtre için bir yol arıyor.

Çıkış: http://framework.zend.com/manual/en/zend.controller.plugins.html

Sonra sadece Zend_Filter sınıfını kullanmak veya yukarıdaki yüklenme kendi filtre sınıf oluşturabiliriz ..