Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2008, 14h27   #1
Invité régulier
 
Inscription : février 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 26
Points : 5
Points : 5
Par défaut securité sur zend (discussion et avis)

Bonjour,
Je post ce message dans l'espoir de recueillir des avis intéressant dans le domaines de la sécurité avec le zend framework. J'ai commencé à développé avec zend il n'y a pas si lgt et je pense que point de vue sécurité, mon code n'est pas très propre. Voici quelques points sur lesquelles je buche lorsque je code :
- Lors de l'insertions dans la base de donnée, j'insère les données sous forme brute ; je fait un
Code :
1
2
3
4
5
 
$table = new Table();
$row = $table->createRow;
$row->champ1 = form->champ1->getValue();
$row->save()
y à t-il une faille à ce niveau ou bien le zend s'occupe de protégé la base de donnée ?
- Y-a-t-il moyen de créer ses propres validateurs ? par exemple, je voudrai autorisé les caractère alphanumérique, les espacement ET certains caractère spéciaux que je définirais moi-même (é,@,è,à,ê, etc.)
- lors de l'affichage dans la vue, est-il possible de créer un plugin ou quelques chose dans le genre qui exécuterai un filtre sur toutes les variables que le controller passe à la vue. En fait, j'ai découvert récemment que dans la vue, il suffisait de faire
Code :
$this->escape($this->variable);
pour appliqué un filtre htmlentities... le problème c'est que le code chez moi est déja fait et cela me prendrai des heures à tout changer...n'y a-t-il pas moyen de généralisé cela ? j'ai essayer en faisant un
Code :
$this->escape($this->content());
dans mon layout principale mais à ce moment, même les tableaux sont filtré et j'ai les balises afficher sous forme de caractère html :s...

voila, j'espère que ce post sera riche en avis et renseignement qui pourront par la même aider beaucoup de personne paumée comme moi sur le net
thepooh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 15h25   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Non, tu ne peux pas faire de plugin pour la vue car toutes les variables ne sont pas échappées de la même manière. Par exemple, si tu construis une URL avec des paramètres, il ne faut pas appeler $this->escape() sur ces variables.

Concernant la protection des variables, Zend_Db s'occupe tout seul de la protection de la BDD. Si tu utilises des formulaires, tu devrais utiliser des validateurs et des filtres sur chacun des champs, ce qui apporte un niveau supplémentaire de sécurité
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 15h53   #3
Invité régulier
 
Inscription : février 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 26
Points : 5
Points : 5
Re bonjour et merci pour ta réponse rapide.
En fait, je trouve également que les validateurs sont très utile mais malheureusement, je trouve que certains validateurs sont manquant... par exemple, je trouve bien pratique les validateur de type alphanumérique(avec espacement) dans le nom, prénom(limite) ; les types inarray dans les champ select ou multicheckbox, les type régex pour les champs spéciaux comme le numéro de téléphone, date etc. mais ce que je trouve dommage c'est qu'il n'y a pas vraiment de validateur pour les champs text, description, ou certains caractère devraient être autorisé et d'autres pas... c'est pourquoi j'en reviens à demander finalement si il n'y a pas moyen de créer sont propre validateur ou on pourrait refuser les caractère comme <, >, \, etc et accepter les caractère alphanumérique, espacement, é, è, à, etc...
ps : pour les filtre, est-il préférable de faire un html entities avant l'insértion dans la base de donéne ou lors de l'affichage ?
Merci de vos réponses
thepooh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 16h34   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Bien sûr que tu peux faire ton propre validateur, d'ailleurs il me semble que c'est expliqué dans la doc.
Concernant le moment d'appeler htmlentities, je te suggère de faire une recherche sur nos forums car la question a été posée une paire de fois...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 00h03   #5
Invité régulier
 
Inscription : février 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 26
Points : 5
Points : 5
yop
salut, c'est vrai que j'ai chercher un peu et en fait yavai pas de quoi en fait tout un plat lol je me rend compte que c'était un post un peu facile sorry :s pour me faire pardonner voila le petit bout de code que j'ai fait sur le validateur, ca vole pas très haut mais bon, ca pourrat ptête aider des gens
merci encore et a ++
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
class DescValidator extends Zend_Validate_Abstract
{
	const MSG_CARACT = 'msgCaract';
 
	protected $_messageTemplates = array(
		self::MSG_CARACT => "'%value%' contient des caractères illégaux : "
	);
 
	public function isValid($value)
	{
		$this->_setValue($value);
 
		$valueF = ereg_replace('[^- [:alnum:] , é è ç à ù â ê î ô û ä ë ï ö ü _ [:space:]]', '', $value);
 
		if ($value != $valueF){
			preg_match_all("/[^- a-z A-Z 0-9 , é è ç à ù â ê î ô û ä ë ï ö ü _ \s]/", $value,$matches);
			$error = "";
			$tab = $matches[0];
			foreach($tab as $key=>$value)
				$error = $error."'$value'".(isset($tab[$key+1])?' , ':'');
			$this->setMessage("Certains caractères ne sont pas autorisé : ".$error);
			$this->_error();
			return false;
		}
 
		return true;
	}
 
}
thepooh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 00h11   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Citation:
ereg_replace
Tu devrais absolument éviter d'utiliser les fonctions ereg*() puisqu'elles ont été complètement supprimées du core de PHP... Utilise preg_*() à la place.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 09h23   #7
Invité régulier
 
Inscription : février 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 26
Points : 5
Points : 5
ah heuu ok lol merci pour le tuyau
Code :
$valueF = preg_replace('/[^- a-z A-Z 0-9 , é è ç à ù â ê î ô û ä ë ï ö ü _ \s]/', '', $value);
thepooh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 09h58   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
La même sans les espaces, ce sera tout aussi efficace mais sans doute plus facile à lire
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web