угроза безопасности require_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 с помощью чего-то наподобие аргументов, отправленных в скрипт, то нет, я не вижу, что это угроза безопасности - в том числе Mage.phpи то, что index.php(также в корне сети) тоже делает.

Джонатан Хасси
источник
Спасибо @Jonathan Hussey, который имеет смысл, не считал, что 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файлы.

Vinai
источник
3

Если вы единственный, кто имеет доступ к этому файлу, почему бы не ограничить if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')его IP ? Я видел много разработчиков magento, которые хранят файлы такого типа в корне Magento и делают связанные с администратором вещи без какой-либо аутентификации. Например, я зашел на один из моих друзей на сайте Magento и только что угадал файл, http://example.com/test.phpи он дал мне вывод Mail sent!lol. Разработчики также пишут важные вещи, чтобы изменить некоторые таблицы базы данных в автономных скриптах, поскольку они хотят делать это время от времени, и не хотят создавать модуль для этого.

Я бы посоветовал любому, кто создает такой тип автономных файлов, который требуется только им, просто ограничьте его по IP, и как только ваша работа над этим файлом закончится, просто поместите его exit;поверх файла. Просто мои 2 цента.

Kalpesh
источник
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)
Фабиан Шменглер,