risco de segurança de require_once 'app / Mage.php'; na raiz do Magento

12

Eu tenho um arquivo na minha raiz do Magento que require_once 'app/Mage.php';me permite acessar Mage::getStoreConfigvariáveis ​​do sistema.

Isso causa um risco à segurança? Devo colocá-lo em outra pasta?

Este é o meu arquivo, /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");
Azevinho
fonte

Respostas:

10

A menos que o script contenha meios pelos quais alterar o conteúdo da instalação do Magento por meio de argumentos enviados ao script, não, não vejo que seja um risco à segurança - incluindo Mage.phpapenas exatamente o que index.php(também na raiz da web) também.

Jonathan Hussey
fonte
Graças @ Jonathan Hussey, que faz o sentido, não considerou que index.phpestava usando
Holly
8

Para adicionar um pouco de paranóia adicional, você pode alterar a instrução require para especificar o app/Mage.phparquivo usando um caminho absoluto do sistema de arquivos, para que o caminho de inclusão do PHP não seja usado:

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

Ou, nas versões PHP abaixo de 5.3:

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

O vetor de ataque muito teórico é que um invasor é capaz de manipular de alguma forma o caminho de inclusão do PHP e, portanto, é capaz de incluir app/Mage.phparquivos arbitrários .

Vinai
fonte
3

Se você é o único que acessará esse arquivo, por que não restringi- if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')lo por IP ? Eu já vi muitos desenvolvedores de magento que mantêm esse tipo de arquivos na raiz do Magento e fazem coisas relacionadas a administradores sem nenhum tipo de autenticação. Por exemplo, eu fui a um dos meus amigos no site Magento e adivinhei o arquivo http://example.com/test.phpe isso me deu uma saída Mail sent!lol. Os desenvolvedores também escrevem coisas sensíveis para alterar algumas tabelas do banco de dados em scripts independentes, pois desejam fazê-lo de vez em quando e não desejam criar um módulo para isso.

Eu sugeriria qualquer um que criar esse tipo de arquivo autônomo, exigido apenas a eles, apenas restrinja-o por IP e, assim que seu trabalho terminar nesse arquivo, coloque-o exit;em cima do arquivo. Apenas meus 2 centavos.

Kalpesh
fonte
1

Creed Bratton, sempre será arriscado chamar esse tipo de código. Desde que você chama Mage.php do twitter.php, você precisa put proper file permission for twitter.php. Ou qualquer outro usuário pode reescrever seu código do twitter.php.Other wise it does not create any issue.

Amit Bera
fonte
As permissões de arquivo padrão de 644 para este arquivo devem estar corretas. Lembre-se também de que os arquivos PHP precisam apenas de permissão de leitura para o usuário do servidor da web; portanto, se você quiser tirar vantagem disso para restringir a edição do arquivo por qualquer motivo, poderá.
Jonathan Hussey
Obrigado @JonathanHussey ... por seu conselho
Amit Bera
2
Por que .. recebi voto .. Can explaing #
Amit Bera
Eu odeio quando eles não explicam o voto negativo.
Sparecycle
Isso precisa de alguns esclarecimentos, pode ser facilmente mal interpretado: 1) "usuário", neste contexto, significa um usuário no servidor, ou seja, alguém que já tem acesso ao servidor. 2) isso não está relacionado ao fato de o arquivo incluir o Mage.php. Se alguém tem acesso ao seu servidor e pode gravar arquivos, ele pode adicionar o código em qualquer arquivo (ou criar um novo, por exemplo em / media, que muitas vezes é definido para 777)
Fabian Schmengler