Sicherheitsrisiko von require_once 'app / Mage.php'; in Magento root

12

Ich habe eine Datei in meinem Magento-Stammverzeichnis, require_once 'app/Mage.php';mit der ich auf Mage::getStoreConfigSystemvariablen zugreifen kann.

Verursacht dies ein Sicherheitsrisiko? Soll ich es in einem anderen Ordner ablegen?

Dies ist meine Datei /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");
Stechpalme
quelle

Antworten:

10

Wenn das Skript keine Mittel enthält, mit denen Inhalte in der Magento-Installation über Argumente geändert werden können, die an das Skript gesendet werden, dann sehe ich kein Sicherheitsrisiko - einschließlich Mage.phpist nur genau das, was index.php(auch im Webroot) auch tut.

Jonathan Hussey
quelle
Vielen Dank @ Jonathan Hussey, das macht Sinn, nicht in Betracht gezogen, dass index.phpes verwendet wurde
Holly
8

Um ein wenig zusätzliche Paranoia hinzuzufügen, können Sie die require-Anweisung ändern, um die app/Mage.phpDatei unter Verwendung eines absoluten Dateisystempfads anzugeben , sodass der PHP-Include-Pfad nicht verwendet wird:

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

Oder auf PHP-Versionen unter 5.3:

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

Der sehr theoretische Angriffsvektor ist, dass ein Angreifer den PHP-Include-Pfad irgendwie manipulieren und somit Arbitraty- app/Mage.phpDateien einbinden kann.

Vinai
quelle
3

Wenn Sie der einzige sind, der auf diese Datei zugreift, warum sollten Sie sie nicht auf IP-Adressen beschränken if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? Ich habe viele Magento-Entwickler gesehen, die solche Dateitypen im Magento-Stammverzeichnis behalten und admin-bezogene Dinge ohne jegliche Authentifizierung ausführen. Ich habe zum Beispiel eine der Magento-Websites meines Freundes besucht und nur die Datei erraten http://example.com/test.phpund es gab mir die Ausgabe Mail sent!lol. Entwickler schreiben auch vertrauliche Dinge, um einige Datenbanktabellen in eigenständigen Skripten zu ändern, da sie dies gelegentlich tun möchten und dafür kein Modul erstellen möchten.

Ich würde jedem empfehlen, der solche eigenständigen Dateien erstellt, die nur für ihn erforderlich sind. Beschränken Sie die IP-Adresse, und fügen Sie nach Abschluss der Arbeit an dieser Datei eine exit;Datei hinzu. Nur meine 2 Cent.

Kalpesh
quelle
1

Creed Bratton, es wird immer riskant sein, diese Art von Code zu nennen. Da Sie Mage.php von twitter.php aus aufrufen, müssen Sie dies tun put proper file permission for twitter.php. Oder jeder andere Benutzer kann Ihren Code von twitter.php umschreiben.Other wise it does not create any issue.

Amit Bera
quelle
Standarddateiberechtigungen von 644 für diese Datei sollten in Ordnung sein. Denken Sie auch daran, dass PHP-Dateien nur eine Leseberechtigung für den Webserver-Benutzer benötigen. Wenn Sie dies nutzen möchten, um die Bearbeitung der Datei aus irgendeinem Grund einzuschränken, können Sie dies tun.
Jonathan Hussey
Vielen Dank @ JonathanHussey ... für Ihren Rat
Amit Bera
2
Warum .. ich habe Abstimmung .. Kann erklären
Amit Bera
Ich hasse es, wenn sie die Abwahl nicht erklären.
Ersatzrad
Dies bedarf einiger Klarstellung und kann leicht missverstanden werden: 1) "Benutzer" bedeutet in diesem Zusammenhang einen Benutzer auf dem Server, dh jemanden, der bereits Zugriff auf den Server hat. 2) Dies hat überhaupt nichts damit zu tun, dass die Datei Mage.php enthält. Wenn jemand Zugriff auf Ihren Server hat und Dateien schreiben kann, kann er den Code in eine beliebige Datei einfügen (oder eine neue erstellen, z. B. in / media, die häufig auf 777 eingestellt ist)
Fabian Schmengler,