risque de sécurité de require_once 'app / Mage.php'; dans la racine Magento

12

J'ai un fichier dans ma racine Magento qui require_once 'app/Mage.php';me donne accès aux Mage::getStoreConfigvariables système.

Cela pose-t-il un risque pour la sécurité? Dois-je le placer dans un autre dossier?

Voici mon fichier, /twitter.php :

<?php
require_once 'app/Mage.php';
Mage::app();
$consumer_key = Mage::getStoreConfig("Social/twitterapi/consumer_key");
$consumer_secret = Mage::getStoreConfig("Social/twitterapi/consumer_secret");
$oauth_access_token = Mage::getStoreConfig("Social/twitterapi/access_token");
$oauth_access_token_secret = Mage::getStoreConfig("Social/twitterapi/access_token_secret");
houx
la source

Réponses:

10

À moins que le script ne contienne des moyens de modifier le contenu de l'installation de Magento via quelque chose comme des arguments envoyés au script, non, je ne vois pas que c'est un risque pour la sécurité - y compris Mage.phpest exactement ce que fait index.php(également à la racine Web).

Jonathan Hussey
la source
Merci @Jonathan Hussey, qui fait le sens, ne considérait pas que index.phpcela l'utilisait
Holly
8

Pour ajouter un peu de paranoïa supplémentaire, vous pouvez modifier l'instruction require pour spécifier le app/Mage.phpfichier à l'aide d'un chemin d'accès absolu au système de fichiers, afin que le chemin d'inclusion PHP ne soit pas utilisé:

require __DIR__ . '/app/Mage.php';

Ou, sur les versions PHP inférieures à 5.3:

require dirname(__FILE__) . '/app/Mage.php';

Le vecteur d'attaque très théorique étant qu'un attaquant est capable de manipuler le chemin d'inclusion PHP d'une manière ou d'une autre et est donc capable d'inclure des app/Mage.phpfichiers arbitraires .

Vinai
la source
3

Si vous êtes le seul à accéder à ce fichier, pourquoi ne pas le restreindre IP if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? J'ai vu de nombreux développeurs de magento qui conservent ce type de fichiers à la racine Magento et effectuent des tâches liées à l'administration sans aucune sorte d'authentification. Par exemple, je suis allé sur le site Web de l'un de mes amis Magento et j'ai juste deviné le fichier http://example.com/test.phpet cela m'a donné une sortie Mail sent!lol. Les développeurs écrivent également des éléments sensibles pour modifier certaines tables de base de données dans des scripts autonomes comme ils veulent le faire de temps en temps, et ne veulent pas créer de module pour cela.

Je suggérerais à quiconque crée ce type de fichiers autonomes qui ne leur est nécessaire que de le restreindre IP, et une fois que votre travail est terminé sur ce fichier, mettez simplement un exit;sur le dessus du fichier. Juste mes 2 cents.

Kalpesh
la source
1

Creed Bratton, Il sera toujours risqué d'appeler ce type de code. Puisque vous appelez Mage.php depuis twitter.php, vous devez le faire put proper file permission for twitter.php. Ou bien tout autre utilisateur peut réécrire votre code de twitter.php.Other wise it does not create any issue.

Amit Bera
la source
Les autorisations de fichier standard de 644 pour ce fichier devraient convenir. Rappelez-vous également que les fichiers PHP n'ont besoin que d'une autorisation de lecture pour l'utilisateur du serveur Web, donc si vous souhaitez en profiter pour restreindre l'édition du fichier pour une raison quelconque, vous pouvez le faire.
Jonathan Hussey
Merci @JonathanHussey ... pour vos conseils
Amit Bera
2
Pourquoi .. je suis descendu voter .. Peut expliquer
Amit Bera
Je déteste quand ils n'expliquent pas le vote négatif.
sparecycle
Cela nécessite quelques éclaircissements, pourrait facilement être mal compris: 1) "utilisateur" dans ce contexte signifie un utilisateur sur le serveur, c'est-à-dire quelqu'un qui a déjà accès au serveur. 2) cela n'est pas du tout lié au fait que le fichier inclut Mage.php. Si quelqu'un a accès à votre serveur et peut écrire des fichiers, il peut ajouter le code dans n'importe quel fichier (ou en créer un nouveau par exemple dans / media, qui est souvent défini sur 777)
Fabian Schmengler