rủi ro bảo mật của request_once 'app / Mage.php'; trong gốc Magento


12

Tôi có một tệp trong thư mục gốc Magento require_once 'app/Mage.php';để cấp cho tôi quyền truy cập vào Mage::getStoreConfigcác biến hệ thống.

Điều này có gây ra rủi ro bảo mật không? Tôi có nên đặt nó trong một thư mục khác?

Đây là tập tin của tôi, /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");

Câu trả lời:


10

Trừ khi tập lệnh chứa các phương tiện để thay đổi nội dung trong cài đặt Magento thông qua một số thứ như các đối số được gửi đến tập lệnh thì không, tôi không thấy đó là một rủi ro bảo mật - bao gồm cả Mage.phpchính xác những gì index.php(cũng ở gốc web) cũng vậy.


Cảm ơn @Jonathan Hussey, điều đó có ý nghĩa, đã không cân nhắc việc index.phpsử dụng nó
Holly

8

Để thêm một chút hoang tưởng bổ sung, bạn có thể thay đổi câu lệnh yêu cầu để chỉ định app/Mage.phptệp bằng đường dẫn hệ thống tệp tuyệt đối, do đó, đường dẫn bao gồm PHP không được sử dụng:

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

Hoặc, trên các phiên bản PHP dưới 5.3:

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

Các rất lý thuyết vector tấn công được rằng kẻ tấn công có thể bằng cách nào đó thao tác các PHP bao gồm đường dẫn và do đó có thể bao gồm arbitraty app/Mage.phptập tin.


3

Nếu bạn là người duy nhất sẽ truy cập tệp này, tại sao không hạn chế IP if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? Tôi đã thấy nhiều nhà phát triển magento giữ các loại tệp như vậy trong root Magento và thực hiện những việc liên quan đến quản trị viên mà không cần bất kỳ loại xác thực nào. Ví dụ, tôi đã truy cập một trong những trang web Magento của bạn bè và chỉ cần đoán tệp http://example.com/test.phpvà nó đã cho tôi đầu ra Mail sent!lol. Các nhà phát triển cũng viết những thứ nhạy cảm để thay đổi một số bảng cơ sở dữ liệu trong các tập lệnh độc lập khi họ muốn làm điều đó một lần và không muốn tạo một mô-đun cho điều đó.

Tôi sẽ đề nghị bất cứ ai tạo ra loại tệp độc lập như vậy chỉ yêu cầu đối với họ, chỉ cần hạn chế IP và khi công việc của bạn kết thúc trên tệp đó, chỉ cần đặt exit;lên trên tệp. Chỉ 2 xu của tôi.


1

Creed Bratton, sẽ luôn có rủi ro khi gọi loại mã này. Vì bạn đang gọi Mage.php từ twitter.php, bạn cần phải put proper file permission for twitter.php. Hoặc người dùng nào khác có thể viết lại mã twitter.php của bạn.Other wise it does not create any issue.


Quyền truy cập tệp tiêu chuẩn 644 cho tệp này sẽ ổn. Cũng cần nhớ rằng các tệp PHP chỉ cần có quyền đọc cho người dùng máy chủ web vì vậy nếu bạn muốn tận dụng điều này để hạn chế chỉnh sửa tệp vì bất kỳ lý do gì thì bạn có thể.
Jonathan Hussey

Cảm ơn @JonathanHussey ... vì lời khuyên của bạn
Amit Bera

2
Tại sao .. tôi đã bỏ phiếu .. Có thể khám phá
Amit Bera

Tôi ghét khi họ không giải thích về việc bỏ phiếu.
sparecycl

Điều này cần một số giải thích rõ ràng, có thể dễ bị hiểu nhầm: 1) "người dùng" trong ngữ cảnh này có nghĩa là người dùng trên máy chủ, tức là ai đó đã có quyền truy cập vào máy chủ. 2) điều này hoàn toàn không liên quan đến thực tế là tập tin bao gồm Mage.php. Nếu ai đó có quyền truy cập vào máy chủ của bạn và có thể viết tệp, anh ta có thể thêm mã vào bất kỳ tệp nào (hoặc tạo mã mới chẳng hạn trong / media, thường được đặt thành 777)
Fabian Schmengler
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.