ryzyko bezpieczeństwa związane z requ_once 'app / Mage.php'; w katalogu głównym Magento

12

Mam plik w moim katalogu głównym Magento, require_once 'app/Mage.php';który daje mi dostęp do Mage::getStoreConfigzmiennych systemowych.

Czy to powoduje zagrożenie bezpieczeństwa? Czy powinienem umieścić go w innym folderze?

To jest mój plik, /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");
Ostrokrzew
źródło

Odpowiedzi:

10

O ile skrypt nie zawiera środków, za pomocą których można modyfikować zawartość instalacji Magento za pomocą argumentów wysyłanych do skryptu, to nie, nie widzę, że stanowi to zagrożenie bezpieczeństwa - obejmuje Mage.phpto tylko dokładnie to, co robi index.php(także w katalogu głównym).

Jonathan Hussey
źródło
Dzięki @Janathan Hussey, który sprawia, że ​​sence, nie sądziłem, że index.phpto wykorzystało
Holly,
8

Aby dodać odrobinę dodatkowej paranoi, możesz zmienić instrukcję wymaganą, aby określić app/Mage.phpplik przy użyciu bezwzględnej ścieżki systemu plików, więc ścieżka dołączania PHP nie jest używana:

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

Lub w wersjach PHP poniżej 5.3:

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

Bardzo teoretyczny ataku jest, że atakujący jest w stanie w jakiś sposób manipulować PHP zawierać ścieżkę, a tym samym jest w stanie zawierać arbitraty app/Mage.phpplików.

Vinai
źródło
3

Jeśli jesteś jedynym, który będzie miał dostęp do tego pliku, dlaczego go nie ograniczyć if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? Widziałem wielu programistów Magento, którzy przechowują tego rodzaju pliki w katalogu głównym Magento i robią rzeczy związane z administracją bez żadnego uwierzytelnienia. Na przykład poszedłem na stronę Magento jednego z moich przyjaciół i po prostu zgadłem plik na, http://example.com/test.phpa to dało mi wynik Mail sent!lol. Programiści piszą również wrażliwe rzeczy, aby zmienić niektóre tabele bazy danych w samodzielnych skryptach, ponieważ chcą to zrobić raz na jakiś czas i nie chcą tworzyć do tego modułu.

Sugerowałbym każdemu, kto tworzy taki typ samodzielnych plików, który jest wymagany tylko dla nich, po prostu ogranicz IP, a gdy skończysz pracę nad tym plikiem, po prostu umieść exit;na wierzchu pliku. Tylko moje 2 centy.

Kalpesh
źródło
1

Creed Bratton, Wywołanie tego typu kodu zawsze będzie ryzykowne. Ponieważ nazywasz się Mage.php z twitter.php, musisz put proper file permission for twitter.php. W przeciwnym razie każdy inny użytkownik może przepisać kod twitter.php.Other wise it does not create any issue.

Amit Bera
źródło
Standardowe uprawnienia do pliku 644 dla tego pliku powinny być w porządku. Pamiętaj także, że pliki PHP potrzebują tylko uprawnienia do odczytu dla użytkownika serwera, więc jeśli chcesz skorzystać z tego, aby ograniczyć edycję pliku z jakiegokolwiek powodu, możesz.
Jonathan Hussey,
Dziękuję @JathanathanHussey ... za radę
Amit Bera
2
Dlaczego… nie mogłem głosować .. Mogę wyjaśnić
Amit Bera
Nienawidzę, kiedy nie wyjaśniają głosowania w dół.
sparecycle
To wymaga pewnych wyjaśnień, może być łatwo źle zrozumiane: 1) „użytkownik” w tym kontekście oznacza użytkownika na serwerze, tj. Kogoś, kto już ma dostęp do serwera. 2) nie ma to wcale związku z faktem, że plik zawiera Mage.php. Jeśli ktoś ma dostęp do twojego serwera i może pisać pliki, może dodać kod do dowolnego pliku (lub utworzyć nowy, na przykład w / media, który często jest ustawiony na 777)
Fabian Schmengler,