Archívum - Május 14, 2014
Website Deployment: Let Us Count The Ways!
Összefoglaló néhány webes deploy eszközről
■ Validációs tervezési hibák
Szép napot!
Kíváncsi vagyok, hogy mit gondoltok a php validációról. Jó, ténylegesen nincs ilyesmi, de én nagyon furcsának találtam az alapvető hozzáállást a validáláshoz az összes kódban, amit eddig láttam. Gyakorlatilag már a kiindulásnál elbuknak, mert eleve rossz stratégiát választanak.
Alapból valahogy így szokás nekifutni php-ben a validálásnak:Symfony dokumentációból másolt kód - Form-Validation
Ez még a szerencsésebb eset. A szerencsétlenebb az, amikor külön controller-ben van a validáció és külön view-ban az űrlap létrehozása, és lapozgatni kell egyikről a másikra, hogy lássuk mi micsoda.
Miért rossz ez (legalábbis szerintem)?
Ha security-ről van szó általában mindenki a whitelist-es megoldásokat biztonságosabbnak tartja, mint a blacklist-eseket, mert könnyű kifelejteni, embereket, akiknek tiltani akarjuk az alkalmazás használatát.
Kíváncsi vagyok, hogy mit gondoltok a php validációról. Jó, ténylegesen nincs ilyesmi, de én nagyon furcsának találtam az alapvető hozzáállást a validáláshoz az összes kódban, amit eddig láttam. Gyakorlatilag már a kiindulásnál elbuknak, mert eleve rossz stratégiát választanak.
Alapból valahogy így szokás nekifutni php-ben a validálásnak:
- // lib/form/ContactForm.class.php
- class ContactForm extends sfForm
- {
- protected static $subjects = array('Subject A', 'Subject B', 'Subject C');
- public function configure()
- {
- $this->setWidgets(array(
- 'name' => new sfWidgetFormInput(),
- 'email' => new sfWidgetFormInput(),
- 'subject' => new sfWidgetFormSelect(array('choices' => self::$subjects)),
- 'message' => new sfWidgetFormTextarea(),
- ));
- $this->widgetSchema->setNameFormat('contact[%s]');
- $this->setValidators(array(
- 'name' => new sfValidatorString(array('required' => false)),
- 'email' => new sfValidatorEmail(),
- 'subject' => new sfValidatorChoice(array('choices' => array_keys(self::$subjects))),
- 'message' => new sfValidatorString(array('min_length' => 4)),
- ));
- }
- }
Ez még a szerencsésebb eset. A szerencsétlenebb az, amikor külön controller-ben van a validáció és külön view-ban az űrlap létrehozása, és lapozgatni kell egyikről a másikra, hogy lássuk mi micsoda.
Miért rossz ez (legalábbis szerintem)?
Ha security-ről van szó általában mindenki a whitelist-es megoldásokat biztonságosabbnak tartja, mint a blacklist-eseket, mert könnyű kifelejteni, embereket, akiknek tiltani akarjuk az alkalmazás használatát.