require_once'app / Mage.php'的安全风险;在Magento的根


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");

Answers:


10

除非脚本包含通过在Magento的ALTER内容通过类似发送到脚本的参数安装方式则没有我不认为这是一个安全风险-包括Mage.php只有正是index.php(也是在Web根)确实太少。


谢谢@乔纳森·侯赛(Jonathan Hussey)提出的见解没有考虑到index.php它的使用
Holly

8

要添加一些额外的偏执狂,您可以更改require语句以app/Mage.php使用绝对文件系统路径指定文件,因此不使用PHP包含路径:

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

或者,在低于5.3的PHP版本上:

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

理论上讲,攻击者能够以某种方式操纵PHP包含路径,从而能够包含任意app/Mage.php文件。


3

如果您是唯一可以访问此文件的人,为什么不进行IP限制if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')呢?我见过许多magento开发人员将这种类型的文件保留在Magento根目录中,并且无需任何身份验证即可执行与管理相关的事情。例如,我去了我的一个朋友Magento网站,只是猜中了文件,http://example.com/test.php它给了我输出结果Mail sent!。开发人员还编写敏感的东西来更改独立脚本中的某些数据库表,因为他们想偶尔执行一次,并且不想为此创建模块。

我建议任何创建这种独立文件类型的人,只需要它们,仅对其进行IP限制,一旦在该文件上完成工作,就将其exit;放在文件之上。只是我的2美分。


1

Creed Bratton,调用此类代码总是有风险的。由于您是从twitter.php调用Mage.php的,因此您需要put proper file permission for twitter.php。否则,任何其他用户都可以重写您的twitter.php代码。Other wise it does not create any issue.


此文件的标准文件权限为644应该可以。还要记住,PHP文件仅需要Web服务器用户的读取权限,因此,如果您确实想利用此权限来限制文件的编辑,那么您可以出于任何原因。
Jonathan Hussey 2014年

感谢@JonathanHussey ...给您的建议
Amit Bera

2
为什么..我没有投票..可以解释吗
阿米特·贝拉

我讨厌他们不解释否决票。
备用轮胎

这需要澄清,很容易被误解:1)在这种情况下,“用户”表示服务器上的用户,即已经可以访问服务器的人。2)这与文件包含Mage.php的事实完全无关。如果有人可以访问您的服务器并可以写文件,则可以将代码添加到任何文件中(或在/ media中创建一个新文件,通常将其设置为777)
Fabian Schmengler 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.