Mam plik w moim katalogu głównym Magento, require_once 'app/Mage.php';
który daje mi dostęp do Mage::getStoreConfig
zmiennych 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");
index.php
to wykorzystałoAby dodać odrobinę dodatkowej paranoi, możesz zmienić instrukcję wymaganą, aby określić
app/Mage.php
plik przy użyciu bezwzględnej ścieżki systemu plików, więc ścieżka dołączania PHP nie jest używana:Lub w wersjach PHP poniżej 5.3:
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.php
plików.źródło
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.php
a to dało mi wynikMail 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.źródło
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.
źródło