Làm thế nào để tiết lộ phiên bản Magento bằng mã?


28

Tôi muốn biết liệu có bất kỳ tập tin lớp nào có sẵn để biết phiên bản magento không. Nếu trang web đã bị hack làm thế nào để tiết lộ phiên bản?

Tôi biết có một cách như sau.

Mage::getVersion();

Nhưng nếu cả frontend và backend của trang magento không hoạt động, làm thế nào chúng ta có thể kiểm tra bằng cách đi qua các tệp lớp? Lớp nào cần tham khảo?


6
Cân nhắc cho những người bỏ phiếu: Magento SE dành cho các nhà phát triển và người dùng . Câu hỏi này là rõ ràng trong lĩnh vực sau này.
đánh dấu

Magento cũng rò rỉ thông tin trong cài đặt da cơ sở của nó. Bằng cách nhìn vào bản tóm tắt giấy phép, bạn có thể ghim nó xuống khá nhanh.
Phòng thí nghiệm Fiasco

Câu trả lời:


36

Các Mage::getVersion()phương pháp được định nghĩa ở đây

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

Nhảy đến getVersionInfotham chiếu ở trên, chúng tôi tìm thấy sau đây

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

Vì vậy, Magento sử dụng mảng được trả về bởi getVersionInfophương thức để đưa ra số phiên bản. Chúng tôi có thể làm như vậy một cách thủ công (với tâm trí của chúng tôi) và đưa ra phiên bản 1.7.0.2 cho phương pháp được liệt kê ở trên. Nếu chúng tôi tìm thấy

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

Chúng tôi biết phiên bản là phiên bản beta đầu tiên của 1.5.0.0.

Điều đó nói rằng, nếu trang web bị hack, tất cả các cược đều bị tắt - vì tin tặc có thể đã sửa đổi nhiều tệp lớp và tạo một phiên bản Magento không tồn tại.


Vì vậy, nếu trang web đã bị hack và chúng tôi cũng không có bản sao lưu, không có cách nào thích hợp để có phiên bản chính xác? (Giả sử tin tặc cũng đã được sửa đổi các chức năng trên)
Sukeshini

4
Số phiên bản ứng dụng Magento chỉ được lưu trữ ở app/Mage.phpnơi Alan Storm ghi chú. Bạn mở nó trong một trình soạn thảo văn bản và xem nếu trước / sau không còn tồn tại. Bạn có thể tra cứu phiên bản mô-đun trong bảng core_resource, những số này được nhập từ các module/etc/config.xmltệp cho mỗi mô-đun. Nếu Mage.phptập tin bị thiếu hoặc sửa đổi, không có nơi nào khác mà tôi biết về nó đang được lưu trữ.
Phòng thí nghiệm Fiasco

@Fiasco Labs: Cảm ơn bạn đã phản hồi. +1
Sukeshini

@Alan Storm: Cảm ơn lời giải thích hay và chi tiết. Tôi đã đi qua các tập tin theo như bạn đã đề cập.
Sukeshini

2
Hãy nhớ rằng cài đặt nâng cấp bị lỗi / bị lỗi có thể hiển thị không chính xác phiên bản trong Mage.php. Một trang web gần đây tôi làm việc đã bị hack đã báo cáo 1.7.0.2 nhưng khi thực sự nhìn vào các tập tin thì rõ ràng trang web này vẫn còn trên 1.6.
pspahn

5

Chúng ta có thể tìm thấy magento mà phiên bản đang sử dụng bây giờ dễ dàng.

Chỉ cần mở thư mục gốc /app/Mage.php

Gần 168 dòng, bạn có thể tìm thấy mã sau đây

hàm tĩnh công khai getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

Điều đó có nghĩa là chúng tôi hiện đang sử dụng phiên bản 1.9.0.1.


5

Nếu bị hack thì bạn cần khôi phục lại bản sao lưu, và sau đó bạn có thể chạy lệnh này từ thư mục gốc magento để kiểm tra phiên bản nhanh chóng:

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

Version: 1.9.2.3

hoặc thậm chí nhanh hơn:

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

Một cách dễ dàng là đổi tên app/etc/local.xmlthành app/etc/local.xml.bkptrình duyệt sẽ hiển thị màn hình cài đặt, ở chân trang từ màn hình này hiển thị phiên bản cài đặt, trong trường hợp của tôi, đó là giải pháp.


1

Vô hiệu hóa trình biên dịch từ System-> Tools-> Compilation đã giải quyết nó cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.