Jak ujawnić wersję Magento za pomocą kodu?

28

Chcę wiedzieć, czy jest dostępny plik klasy, aby poznać wersję magento. Jeśli witryna została zhakowana, jak ujawnić wersję?

Wiem, że jest na to sposób.

Mage::getVersion();

Ale jeśli zarówno frontend, jak i backend strony magento nie działa, jak możemy to sprawdzić, przeglądając pliki klas? Którą klasę należy skierować?

Sukeshini
źródło
6
Uwaga dla głosujących za odrzuceniem: Magento SE jest przeznaczony zarówno dla programistów, jak i użytkowników . To pytanie wyraźnie dotyczy tego ostatniego.
zyskuje
Magento przecieka także informacje w instalacjach skórek bazowych. Patrząc na tablicę rejestracyjną licencji, można ją szybko przypiąć.
Fiasco Labs,

Odpowiedzi:

36

Mage::getVersion()Metoda zdefiniowana jest tutaj

#File: app/Mage.php
public static function getVersion()
{
    $i = self::getVersionInfo();
    return trim("{$i['major']}.{$i['minor']}.{$i['revision']}" . ($i['patch'] != '' ? ".{$i['patch']}" : "")
                    . "-{$i['stability']}{$i['number']}", '.-');
}

Przechodząc do getVersionInfowspomnianego powyżej, znajdujemy następujące

#File: app/Mage.php
public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '7',
        'revision'  => '0',
        'patch'     => '2',
        'stability' => '',
        'number'    => '',
    );
}

Tak więc Magento używa tablicy zwróconej przez getVersionInfometodę, aby wymyślić numer wersji. Możemy to zrobić ręcznie (naszym zdaniem) i zaproponować wersję 1.7.0.2 dla metody wymienionej powyżej. Gdybyśmy znaleźli

public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '5',
        'revision'  => '0',
        'patch'     => '0',
        'stability' => 'beta',
        'number'    => '1',
    );
}

Wiedzieliśmy, że wersja była pierwszą wersją beta 1.5.0.0.

To powiedziawszy, jeśli strona została zhakowana, wszystkie zakłady są wyłączone - hakerzy prawdopodobnie zmodyfikowali wiele plików klas i stworzyli wersję Magento, która nie istnieje.

Alan Storm
źródło
Więc jeśli witryna została zaatakowana przez hakerów, a my również nie mamy kopii zapasowej, nie ma odpowiedniego sposobu na uzyskanie dokładnej wersji? (Załóżmy, że hakerzy również zostali zmodyfikowani powyżej funkcji)
Sukeshini
4
Numer wersji aplikacji Magento jest przechowywany tylko app/Mage.phptam, gdzie zauważa Alan Storm. Otwierasz go w edytorze tekstu i sprawdzasz, czy przód / tył są zepsute. Możesz sprawdzić wersję modułu w tabeli core_resource, te numery są importowane z module/etc/config.xmlplików dla każdego modułu. Jeśli Mage.phppliku brakuje lub jest modyfikowany, nie ma innego miejsca, w którym wiem, że jest przechowywany.
Fiasco Labs
@Fiasco Labs: Dzięki za odpowiedź. +1
Sukeshini
@Alan Storm: Dzięki za miłe i szczegółowe wyjaśnienie. Przeglądałem pliki zgodnie z wspomnieniami.
Sukeshini,
2
Należy pamiętać, że nieudana / nieudana instalacja aktualizacji może nieprawidłowo wyświetlać wersję w Mage.php. Niedawna witryna, nad którą pracowałem, została zaatakowana przez hakerów, zgłaszając 1.7.0.2, ale kiedy faktycznie przeglądałem pliki, było jasne, że ta strona wciąż była w wersji 1.6.
pspahn
5

Możemy łatwo znaleźć magento, z której wersji korzysta teraz.

Po prostu otwórz folder główny /app/Mage.php

Blisko linii 168, możesz znaleźć następujący kod:

publiczna funkcja statyczna getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Oznacza to, że obecnie korzystamy z wersji 1.9.0.1.

Teja Bhagavan Kollepara
źródło
5

jeśli zostanie zhakowany, musisz przywrócić kopię zapasową, a następnie możesz uruchomić to polecenie z folderu głównego magento, aby szybko sprawdzić wersję:

echo "Version: $(php -r "require 'app/Mage.php'; echo Mage::getVersion();")"

Version: 1.9.2.3

lub jeszcze szybciej:

grep -A 10 "function getVersionInfo" app/Mage.php 

public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '9',
        'revision'  => '2',
        'patch'     => '3',
        'stability' => '',
        'number'    => '',
    );
}
MagenX
źródło
1

Łatwym sposobem jest zmiana nazwy app/etc/local.xmlna app/etc/local.xml.bkpprzeglądarce pojawi się ekran instalacyjny, na stopce, z tego ekranu pokazują wersję instalacji, w moim przypadku było to rozwiązanie.

Alexandre S. Silva
źródło
1

Wyłączenie kompilacji z System-> Narzędzia-> Kompilacja rozwiązało to dla mnie.

Ivaylo Alexandrov
źródło