Как выявить версию Magento по коду?

28

Я хочу знать, есть ли какой-нибудь файл класса, доступный для ознакомления с версией magento. Если сайт был взломан, как раскрыть версию?

Я знаю, что есть способ следующим образом.

Mage::getVersion();

Но если и внешний, и внутренний интерфейсы сайта magento не работают, как мы можем проверить, просматривая файлы классов? К какому классу нужно обратиться?

Sukeshini
источник
6
Замечание для избирателей: Magento SE предназначен как для разработчиков, так и для пользователей . Этот вопрос явно в области последнего.
отметки
Magento также пропускает информацию в своих базовых скинах. Глядя на шаблон лицензии, вы можете довольно быстро ее определить.
Fiasco Labs

Ответы:

36

Mage::getVersion()Метод определяется здесь

#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']}", '.-');
}

Переходя к указанному getVersionInfoвыше, мы находим следующее

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

Итак, Magento использует массив, возвращаемый getVersionInfoметодом, чтобы найти номер версии. Мы можем сделать это вручную (с нашими мыслями) и предложить версию 1.7.0.2 для метода, указанного выше. Если мы нашли

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

Мы знали бы, что версия была первой бета-версией 1.5.0.0.

Тем не менее, если сайт был взломан, все ставки отключены - поскольку хакеры, вероятно, изменили несколько файлов классов и создали версию Magento, которая не существует.

Алан Сторм
источник
Так что, если сайт был взломан и у нас нет резервной копии, нет ли правильного способа получить точную версию? (Предположим, хакеры также были изменены над функциями)
Sukeshini
4
Номер версии приложения Magento хранится только app/Mage.phpтам, где отмечает Alan Storm. Вы открываете его в текстовом редакторе и смотрите, не перешли ли передние / задние. Вы можете посмотреть версию модуля в таблице core_resource, эти номера импортируются из module/etc/config.xmlфайлов для каждого модуля. Если Mage.phpфайл отсутствует или изменен, я не знаю другого места, где он хранится.
Fiasco Labs
@ Fiasco Labs: Спасибо за ответ. +1
Sukeshini
@Alan Storm: Спасибо за приятное и подробное объяснение. Я просмотрел файлы, как вы упомянули.
Sukeshini
2
Помните, что неудачная / неудачная установка обновления может неправильно отображать версию в Mage.php. Недавно взломанный сайт, на котором я работал, сообщал о версии 1.7.0.2, но при просмотре файлов стало ясно, что этот сайт все еще работает на версии 1.6.
pspahn
5

Мы можем легко найти magento, какая версия сейчас используется.

Просто откройте вашу корневую папку /app/Mage.php

Рядом с 168 строкой, вы можете найти следующий код

публичной статической функции getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Это означает, что в настоящее время мы используем версию 1.9.0.1.

Теджа Бхагаван Коллепара
источник
5

если взломан, то вам нужно восстановить резервную копию, а затем вы можете запустить эту команду из корневой папки magento, чтобы быстро проверить версию:

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

Version: 1.9.2.3

или даже быстрее:

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
источник
1

Простой способ переименования app/etc/local.xmlв app/etc/local.xml.bkpбраузер будет отображаться экран установки, в сноске этого экрана показывает версию установки, в моем случае это было решением.

Александр Сергеевич Сильва
источник
1

Отключение компиляции из System-> Tools-> Compilation решило это для меня.

Ивайло Александров
источник