ризик безпеки для requ_once 'app / Mage.php'; в корені Магенто


12

У мене в корені Magento є файл, який 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 install через щось на зразок аргументів, надісланих до скрипту, то ні, я не бачу, що це ризик для безпеки - в тому числі Mage.phpє лише саме те, що index.php(також у веб-корінцях) теж.


Дякую @Jonathan Hussey, який робить сенс, не вважав, що index.phpвикористовує його
Холлі

8

Щоб додати трохи додаткової параної, ви можете змінити оператор вимагати, щоб вказати app/Mage.phpфайл, використовуючи абсолютний шлях до файлової системи, тому шлях до PHP включати не використовується:

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

Або у версіях PHP нижче 5.3:

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

Дуже теоретичний вектор атаки в тому , що зловмисник може яким - то чином маніпулювати PHP включають шлях і , таким чином , може включати в себе arbitraty app/Mage.phpфайли.


3

Якщо ви єдиний, хто отримає доступ до цього файлу, чому б не обмежити if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')його IP ? Я бачив багато розробників magento, які зберігають такі файли в корені Magento і роблять речі, пов’язані з адміністратором, без будь-якої аутентифікації. Наприклад, я зайшов до одного з веб-сайтів 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-файлам потрібен лише дозвіл на читання користувачеві веб-сервера, тому якщо ви хочете скористатися цим, обмежте редагування файлу з будь-якої причини, тоді ви могли б.
Джонатан Хуссі

Дякую @JonathanHussey ... за вашу пораду
Аміт Бера

2
Чому .. я проголосував. Можу пояснити
Аміт Бера

Я ненавиджу, коли вони не пояснюють голосування проти.
запчастини

Це потребує певного роз'яснення, його можна легко зрозуміти: 1) "користувач" у цьому контексті означає користувача на сервері, тобто того, хто вже має доступ до сервера. 2) це зовсім не пов’язано з тим, що файл включає Mage.php. Якщо хтось має доступ до вашого сервера і може писати файли, він може додати код у будь-який файл (або створити новий, наприклад, у / media, який часто встановлюється на 777)
Fabian Schmengler
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.