rischio di sicurezza di require_once 'app / Mage.php'; nella radice di Magento


12

Ho un file nella mia radice di Magento che require_once 'app/Mage.php';mi dà accesso alle Mage::getStoreConfigvariabili di sistema.

Ciò causa un rischio per la sicurezza? Devo inserirlo in un'altra cartella?

Questo è il mio file, /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");

Risposte:


10

A meno che lo script non contenga mezzi per alterare il contenuto nell'installazione di Magento tramite qualcosa come argomenti inviati allo script, allora no, non vedo che si tratta di un rischio per la sicurezza, incluso Mage.phpè esattamente ciò che fa index.php(anche su web root).


Grazie @Jonathan Hussey, che ha ragione, non ha considerato che lo index.phpstava usando
Holly

8

Per aggiungere un po 'di paranoia aggiuntiva, è possibile modificare l'istruzione request per specificare il app/Mage.phpfile utilizzando un percorso di file system assoluto, quindi il percorso di inclusione PHP non viene utilizzato:

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

Oppure, nelle versioni PHP precedenti alla 5.3:

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

Il vettore di attacco molto teorico è che un attaccante è in grado di manipolare in qualche modo il percorso di inclusione di PHP e quindi è in grado di includere app/Mage.phpfile arbitrari .


3

Se sei l'unico che accederà a questo file, perché non limitarlo IP if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? Ho visto molti sviluppatori di magento che mantengono questo tipo di file nella radice di Magento e fanno cose relative all'amministratore senza alcun tipo di autenticazione. Ad esempio, sono andato su uno dei miei amici sito Web Magento e ho appena indovinato il file http://example.com/test.phpe mi ha dato output Mail sent!lol. Gli sviluppatori scrivono anche cose sensibili per cambiare alcune tabelle del database in script autonomi come vogliono farlo una volta e non vogliono creare un modulo per quello.

Suggerirei a chiunque crei quel tipo di file standalone che è richiesto solo a loro, limitandolo solo all'IP, e una volta che il tuo lavoro è finito su quel file basta metterne uno exit;in cima al file. Solo i miei 2 centesimi.


1

Creed Bratton, sarà sempre rischioso chiamare questo tipo di codice. Dato che chiami Mage.php da twitter.php, devi farlo put proper file permission for twitter.php. Oppure qualsiasi altro utente può riscrivere il tuo codice di twitter.php.Other wise it does not create any issue.


Le autorizzazioni di file standard di 644 per questo file dovrebbero andare bene. Ricorda anche che i file PHP necessitano solo dell'autorizzazione in lettura per l'utente del server web, quindi se volessi approfittare di questo per limitare la modifica del file per qualsiasi motivo, allora potresti.
Jonathan Hussey,

Grazie a @JonathanHussey ... per il tuo consiglio
Amit Bera

2
Perché ... ho votato male .. Posso spiegare
Amit Bera

Odio quando non spiegano il voto negativo.
sparecycle

Ciò necessita di alcuni chiarimenti, potrebbe essere facilmente frainteso: 1) "utente" in questo contesto significa un utente sul server, ovvero qualcuno che ha già accesso al server. 2) questo non è affatto correlato al fatto che il file includa Mage.php. Se qualcuno ha accesso al tuo server e può scrivere file, potrebbe aggiungere il codice in qualsiasi file (o crearne uno nuovo ad esempio in / media, che spesso è impostato su 777)
Fabian Schmengler
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.