Bonjour,

Sur mon site j'ai différentes fonctions qui font appel à la BDD sur les mêmes tables.
Donc pour éviter de faire des appelles répétés à la BDD lors des foreach, je stock les informations reçues dans une variable (en protected) lors de la première requête, et j'ai créé une petite fonction qui lors d'un nouveau foreach vérifie si la variable est vide ou pas.
Si la variable est vide alors je fais la foreach sur la BDD, si elle contient quelque chose alors je fais le foreach sur la variable.

Ma question est assez simple, est-ce quand terne de sécurité informatique cela est sur ou pas ?
La méthode est intéressante en terme de performance (plus rapide de boucler sur une variable que sur la bdd) mais n'étant pas un professionnel de la sécurité je me posais donc la question. Si quelqu'un à un début de réponse je suis preneur.

Merci

8 réponses


Salut,

Que-ce qui, selon toi, pourrait être risqué ? Stocker des données dans une variable n'est en aucun cas risqué (pas réellement vrai mais bon, c'est des cas très spécifiques).

Bonjour tleb,

En fait je me suis posé la question, car j'utilise principalement cette méthode dans la console d'admin du site et par exemple quand je veux afficher la fiche d'un client je stock les données personnelles du client dans la variable. Donc comme ça peut être des données dit sensible, alors dans le doute je me suis dit qu'il valait mieux poser la question.

Merci pour cette réponse rapide

Non, rien de risqué. Par exemple, si tu prends un mot de passe envoyé dans un formulaire, il est stocké dans de nombreuses variables sans que ça pose problème.

Ok super, et merci encore pour la réponse rapide de bon matin

Hello,

J'ajouterai que tout dépend ce que tu fais de ton objet.
Si tu le serializes pour le mettre dans un fichier ou en base pour un accès plus rapide, la ça devient risqué.
Si ce n'est pas le cas, ta variable n'est accessible que lors de l'execution de ton script par le serveur, à chaque fois qu'il est appelé du coup.

En fait c'est juste pour de l'affichage, je vais donner un exemple concret

Dans mon model pour la fiche client, j'ai une première fonction userName($id) qui fait une boucle sur la BDD dans la table users et qui me ramène le nom et prénom du client pour l'afficher sur ma page. Puis j'ai une deuxième fonction userAddress($id) qui boucle sur la même table users et qui me ramène l'adresse du client (et ainsi de suite).

Du coup je me suis dit que lorsque la première fonction s'exécutait, au lieu de ramener juste le nom et prénom, j'allais tout ramener, et stocker les infos dans une variable. Comme ça quand la 2ème fonction se lance userAddress($id), plutôt que de refaire une boucle sur la BDD je boucle sur la variable (j'ai juste rajouté une petite fonction pour vérifier si la variable est null ou pas avant de faire le foreach).

C'est sur que pour ce petit exemple l'intérêt en terme de performance est quasi nul, mais en fait sur mes différents model et modules j'ai plein de fonctions qui boucle sur les mêmes tables de la BDD, du coup cette méthode améliore vraiment les performances. Mais j'utilise cette méthode uniquement pour l'affichage.

Bin du coup "aucun risque" : ta variable est détruite après chaque utilisation.
Tu devrais regarder un peu du côté de la programmation objet ;)

OK merci.
En fait pour la POO quand j'ai créer le site (il y a un petit moment maintenant) je m'étais basé sur le tuto La POO en PHP de grafikart sur lequel j'avais rajouté le design patterns MVC.
A l'époque je débutais et je crois pouvoir dire aujourd'hui que je suis encore un débutant ;)
Bref au début n'ayant pas bien compris le principe de la POO, plutôt que de créer un objet global que j'allais réutiliser, j'ai créé plein de petits objets et une multitude de requêtes en veux tu en voilà. Aujourd'hui le site commence à bien fonctionner et du coup j'essaie d'optimiser tout ça au mieux comme je peux, mais il faut bien le dire heureusement que vous êtes la