2010-09-18 9 views
1

Les moteurs de modèles modernes pour php (say, dwoo ou smarty) peuvent utiliser des objets comme variables. Vous pouvez utiliser {$ obj-> method()}, ce qui est vraiment pratique, et je l'utilise beaucoup. Mais, il existe un problème de sécurité évident avec l'exportation directe d'objets à partir d'ORM, avec des méthodes telles qu'insertion, suppression, etc. Existe-t-il une méthode rationnelle pour n'exposer qu'une partie des méthodes au moteur de gabarit? Je pensais emballage exposer seulement les méthodes de la liste blanche:Comment utiliser les objets dans les modèles de manière sécurisée

$aTplVars = array (new TplWrapper(new User($nUserId), array('getAccount','getStatus'))); 

Que pensez-vous de penser (il y a les frais généraux de performance clair)? Ou peut-être il y a quelque chose comme ça dans certains moteurs de modèles existants pour PHP?

+0

@ts cela n'a aucun sens. Si un attaquant a l'exécution de code à distance alors vous avez déjà perdu. Son cocher, il n'y a rien que tu puisses faire. Tout le but de la sécurité est d'empêcher cela de se produire en premier lieu. En secuirty vous devez définir qui est la menace. Pour ces raisons, je recommande de supprimer la balise [security] de ce message. – rook

Répondre

0

Vous ne pouvez pas "paralyser" un objet en PHP (ou n'importe quelle langue que je connais) après sa création. L'utilisation d'objets peut sembler intéressante, mais vous devez récupérer les données pertinentes pour votre modèle dans le contrôleur et les placer dans un tableau que vous pouvez attribuer en toute sécurité au modèle.

+0

le problème est qu'il existe des objets imbriqués (user-> account-> history-> .. etc) et il est nécessaire d'effectuer des opérations coûteuses en fonction de la vue actuelle –

+0

et, juste pour ajouter, vous pouvez "paralyser" un objet en php - vous pouvez utiliser runkit, vous pouvez le faire aussi en python et il y a beaucoup de langages qui permettent de manipuler des méthodes et des fonctions comme des variables. –

+0

Jamais vu runkit avant, merci d'avoir remarqué (bien que la suppression des méthodes pendant l'exécution soit un peu malade). – halfdan

Questions connexes