Come rivelare la versione di Magento per codice?


28

Voglio sapere se esiste un file di classe disponibile per conoscere la versione di Magento. Se il sito è stato violato come rivelare la versione?

So che c'è un modo come segue.

Mage::getVersion();

Ma se sia il frontend che il backend del sito magento non funzionano, come possiamo controllare esaminando i file di classe? Quale classe deve fare riferimento?


6
Una considerazione per gli elettori negativi: Magento SE è destinato sia agli sviluppatori che agli utenti . Questa domanda è chiaramente nell'area di quest'ultima.
benmark

Magento perde anche informazioni nelle installazioni di skin di base. Osservando la targa della licenza, è possibile fissarla abbastanza rapidamente.
Fiasco Labs,

Risposte:


36

Il Mage::getVersion()metodo è definito qui

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

Saltando al getVersionInfosopra citato, troviamo quanto segue

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

Quindi, Magento usa l'array restituito dal getVersionInfometodo per trovare un numero di versione. Possiamo farlo manualmente (con le nostre menti) e inventare la versione 1.7.0.2 per il metodo sopra elencato. Se abbiamo trovato

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

Sapremmo che la versione era la prima beta di 1.5.0.0.

Detto questo, se il sito è stato violato, tutte le scommesse sono disattivate, poiché gli hacker hanno probabilmente modificato più file di classe e creato una versione di Magento che non esiste.


Quindi se il sito è stato violato e non abbiamo anche il backup, non esiste un modo corretto per ottenere la versione esatta? (Supponiamo che anche gli hacker siano stati modificati sopra le funzioni)
Sukeshini,

4
Il numero di versione dell'applicazione Magento è memorizzato solo app/Mage.phpdove Note di Alan Storm. Lo apri in un editor di testo e vedi se il fronte / retro sono defunti. Puoi cercare il versioning del modulo nella tabella core_resource, questi numeri vengono importati dai module/etc/config.xmlfile per ciascun modulo. Se il Mage.phpfile è mancante o modificato, non c'è nessun altro posto che io sappia che viene archiviato.
Fiasco Labs

@Fiasco Labs: grazie per la risposta. +1
Sukeshini,

@Alan Storm: Grazie per la bella e dettagliata spiegazione. Ho esaminato i file come hai menzionato.
Sukeshini,

2
Tieni presente che un'installazione di aggiornamento non riuscita / fallita potrebbe visualizzare erroneamente la versione in Mage.php. Un recente sito su cui ho lavorato e che è stato violato stava riportando la 1.7.0.2 ma quando effettivamente guardavo i file era chiaro che questo sito era ancora su 1.6.
pspahn,

5

Possiamo trovare facilmente il magento quale versione sta usando ora.

Basta aprire la cartella principale /app/Mage.php

Vicino alla riga 168, è possibile trovare la seguente

funzione statica pubblica getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Significa che attualmente stiamo utilizzando la versione 1.9.0.1.


5

se violato, è necessario ripristinare il backup, quindi è possibile eseguire questo comando dalla cartella principale di magento per verificare rapidamente la versione:

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

Version: 1.9.2.3

o anche più veloce:

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

public static function getVersionInfo()
{
    return array(
        'major'     => '1',
        'minor'     => '9',
        'revision'  => '2',
        'patch'     => '3',
        'stability' => '',
        'number'    => '',
    );
}

1

Un modo semplice è rinomina app/etc/local.xmlper app/etc/local.xml.bkpil browser mostrerà la schermata di installazione, a piè di pagina da questa schermata mostra la versione di installazione, nel mio caso è stata la soluzione.


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.