ความเสี่ยงด้านความปลอดภัยของ require_once 'app / Mage.php'; ใน Magento root


12

ฉันมีไฟล์อยู่ในรูทวีโอไอพีของฉันrequire_once 'app/Mage.php';เพื่อให้ฉันสามารถเข้าถึงMage::getStoreConfigตัวแปรระบบได้

สิ่งนี้ทำให้เกิดความเสี่ยงด้านความปลอดภัยหรือไม่? ฉันควรวางไว้ในโฟลเดอร์อื่นหรือไม่?

นี่คือไฟล์ของฉัน/twitter.php :

<?php
require_once 'app/Mage.php';
Mage::app();
$consumer_key = Mage::getStoreConfig("Social/twitterapi/consumer_key");
$consumer_secret = Mage::getStoreConfig("Social/twitterapi/consumer_secret");
$oauth_access_token = Mage::getStoreConfig("Social/twitterapi/access_token");
$oauth_access_token_secret = Mage::getStoreConfig("Social/twitterapi/access_token_secret");

คำตอบ:


10

เว้นแต่ว่าสคริปต์นั้นมีวิธีการที่จะแก้ไขเนื้อหาใน Magento ติดตั้งผ่านบางสิ่งเช่นอาร์กิวเมนต์ที่ส่งไปยังสคริปต์แล้วฉันไม่เห็นว่ามันมีความเสี่ยงด้านความปลอดภัย - รวมถึงMage.phpสิ่งที่index.php(เช่นที่รูทเว็บ) เท่านั้น


ขอบคุณ @ Jonathan ฮัซเซย์ที่ทำให้รู้สึกไม่ได้พิจารณาว่าindex.phpถูกใช้มัน
ฮอลลี่

8

หากต้องการเพิ่มความหวาดระแวงเพิ่มเติมเล็กน้อยคุณสามารถเปลี่ยนคำสั่ง require เพื่อระบุapp/Mage.phpไฟล์โดยใช้พา ธ ระบบไฟล์แบบสัมบูรณ์ดังนั้นจึงไม่ใช้เส้นทางการรวม PHP:

require __DIR__ . '/app/Mage.php';

หรือในเวอร์ชัน PHP ด้านล่าง 5.3:

require dirname(__FILE__) . '/app/Mage.php';

ทฤษฎีมากการโจมตีเป็นที่ผู้โจมตีสามารถที่จะจัดการอย่างใด PHP รวมถึงเส้นทางและดังนั้นจึงสามารถที่จะรวม arbitraty app/Mage.phpไฟล์


3

หากคุณเป็นคนเดียวที่จะเข้าถึงไฟล์นี้ทำไมไม่ จำกัด IP if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? ฉันได้เห็นนักพัฒนาวีโอไอพีหลายคนที่เก็บไฟล์ประเภทนี้ไว้ในรูทวีโอไอพีและทำสิ่งที่เกี่ยวข้องกับผู้ดูแลระบบโดยไม่ต้องมีการพิสูจน์ตัวตนใด ๆ ตัวอย่างเช่นฉันไปที่เว็บไซต์ Magento หนึ่งในเพื่อนของฉันและเพิ่งเดาไฟล์ที่http://example.com/test.phpและมันทำให้ฉันออกMail sent!lol นักพัฒนายังเขียนสิ่งที่ละเอียดอ่อนเพื่อเปลี่ยนตารางฐานข้อมูลบางส่วนในสคริปต์แบบสแตนด์อโลนตามที่พวกเขาต้องการทำอีกครั้งและไม่ต้องการสร้างโมดูลสำหรับสิ่งนั้น

ฉันขอแนะนำให้ทุกคนที่สร้างไฟล์ประเภทสแตนด์อโลนซึ่งจำเป็นต้องใช้กับพวกเขาเพียงแค่ จำกัด IP และเมื่องานของคุณเสร็จสิ้นในไฟล์นั้นก็แค่วางไฟล์exit;ที่ด้านบนของไฟล์ แค่ 2 เซ็นต์ของฉัน


1

Creed Bratton มันจะเสี่ยงต่อการเรียกรหัสประเภทนี้เสมอ เนื่องจากคุณเป็นโทร Mage.php จาก twitter.php put proper file permission for twitter.phpคุณจะต้อง หรือผู้ใช้รายอื่นสามารถเขียนรหัส twitter.php ของคุณได้Other wise it does not create any issue.


สิทธิ์ของไฟล์มาตรฐาน 644 สำหรับไฟล์นี้ควรจะใช้ได้ โปรดจำไว้ว่าไฟล์ PHP ต้องได้รับอนุญาตให้อ่านสำหรับผู้ใช้เว็บเซิร์ฟเวอร์เท่านั้นดังนั้นหากคุณต้องการใช้ประโยชน์จากสิ่งนี้เพื่อ จำกัด การแก้ไขไฟล์ไม่ว่าจะด้วยเหตุผลใดก็ตาม
Jonathan Hussey

ขอบคุณ @JonathanHussey ... สำหรับคำแนะนำของคุณ
Amit Bera

2
ทำไม .. ฉันลงคะแนน .. สามารถอธิบายได้
Amit Bera

ฉันเกลียดเมื่อพวกเขาไม่อธิบายการลงคะแนนเสียง
2557

สิ่งนี้ต้องการการชี้แจงบางอย่างอาจเข้าใจผิดได้ง่าย: 1) "ผู้ใช้" ในบริบทนี้หมายถึงผู้ใช้บนเซิร์ฟเวอร์นั่นคือคนที่เข้าถึงเซิร์ฟเวอร์แล้ว 2) สิ่งนี้ไม่เกี่ยวข้องกับความจริงที่ว่าไฟล์ดังกล่าวรวมถึง Mage.php หากใครบางคนสามารถเข้าถึงเซิร์ฟเวอร์ของคุณและสามารถเขียนไฟล์เขาสามารถเพิ่มรหัสในไฟล์ใด ๆ (หรือสร้างใหม่เช่นใน / สื่อซึ่งมักจะตั้งค่าที่ 777)
Fabian Schmengler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.