จะเปิดเผยเวอร์ชั่นของวีโอไอพีด้วยรหัสได้อย่างไร


28

ฉันต้องการทราบว่ามีไฟล์คลาสใดที่พร้อมใช้งานเพื่อให้รู้ถึงเวอร์ชันวีโอไอพี หากเว็บไซต์ถูกแฮ็คจะเปิดเผยเวอร์ชั่นอย่างไร?

ฉันรู้ว่ามีวิธีดังต่อไปนี้

Mage::getVersion();

แต่ถ้าทั้งส่วนหน้าและส่วนหลังของเว็บไซต์วีโอไอพีไม่ทำงานเราจะตรวจสอบโดยใช้ไฟล์คลาสได้อย่างไร คลาสใดที่ต้องอ้างอิง


6
สิ่งที่ต้องพิจารณาสำหรับผู้ลงคะแนนเสียง: Magento SE มีไว้สำหรับนักพัฒนาและผู้ใช้เหมือนกัน คำถามนี้ชัดเจนในพื้นที่ของหลัง
benmarks

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'    => '',
    );
}

ดังนั้นวีโอไอพีจึงใช้อาร์เรย์ที่ส่งคืนโดย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

เราสามารถค้นหาวีโอไอพีที่ใช้งานได้ง่ายในตอนนี้

เพียงเปิดโฟลเดอร์รูทของคุณ /app/Mage.php

ใกล้ 168 บรรทัดคุณจะพบว่าโค้ด

สาธารณะฟังก์ชั่นคงที่ getVersionInfo ()

{

    return array(

        'major'     => '1',

        'minor'     => '9',

        'revision'  => '0',

        'patch'     => '1',

        'stability' => '',

        'number'    => '',

    );

} 

หมายความว่าเราใช้เวอร์ชั่น 1.9.0.1 อยู่ในปัจจุบัน


5

ถ้าแฮ็คคุณต้องกู้คืนข้อมูลสำรองแล้วคุณสามารถเรียกใช้คำสั่งนี้จากโฟลเดอร์ root 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'    => '',
    );
}

1

วิธีที่ง่ายที่สุดคือการเปลี่ยนชื่อapp/etc/local.xmlไปยังapp/etc/local.xml.bkpเบราว์เซอร์จะแสดงหน้าจอการติดตั้งที่ส่วนท้ายจากหน้าจอนี้แสดงรุ่นของการติดตั้งในกรณีของฉันมันเป็นวิธีการแก้ปัญหา


1

การปิดใช้งานการรวบรวมจากระบบ -> เครื่องมือ -> การรวบรวมแก้ไขให้ฉันแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.