requir_once 'app / Mage.php' güvenlik riski; Magento kökünde


12

Magento kökümde sistem değişkenlerine require_once 'app/Mage.php';erişebileceğim bir dosya var Mage::getStoreConfig.

Bu bir güvenlik riskine neden oluyor mu? Başka bir klasöre yerleştirmeli miyim?

Bu benim dosyam /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");

Yanıtlar:


10

Komut dosyası Magento içeriğinde komut dosyasına gönderilen argümanlar gibi bir şey aracılığıyla yüklemek için araçlar içermediği sürece hayır o zaman bir güvenlik riski olduğunu görmüyorum - dahil Mage.phpsadece tam olarak ne olduğunu index.php(web kökünde de).


Teşekkürler @Jonathan Hussey, bunu yapan, bunu index.phpkullandığını düşünmedi
Holly

8

Biraz ek paranoya eklemek için, app/Mage.phpdosyayı mutlak bir dosya sistemi yolu kullanarak belirtmek için requir deyimini değiştirebilirsiniz , böylece PHP içerme yolu kullanılmaz:

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

Veya, 5.3'ün altındaki PHP sürümlerinde:

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

Çok teorik bir saldırganın böylece her nasılsa PHP yolu dahil manipüle edebilir ve bu varlık saldırı vektörü arbitraty dahil edebiliyor app/Mage.phpdosyaları.


3

Bu dosyaya erişecek tek kişi sizseniz, neden IP'yi kısıtlamıyorsunuz if($_SERVER['REMOTE_ADDR']=='your.ip.address.here')? Bu tür dosyaları Magento kökünde tutan ve herhangi bir kimlik doğrulama olmadan yönetici ile ilgili şeyler yapan birçok magento geliştiricisi gördüm. Örneğin, bir arkadaşım Magento web sitesine gitti ve sadece dosya tahmin http://example.com/test.phpve bana çıktı Mail sent!lol verdi . Geliştiriciler ayrıca, bağımsız komut dosyalarında bazı veritabanı tablolarını değiştirmek için bir süre yapmak istedikleri için hassas şeyler yazarlar ve bunun için bir modül oluşturmak istemezler.

Sadece kendileri için gerekli olan bu tür bağımsız dosyalar oluşturan herkese öneririm, sadece IP kısıtlaması yapın ve işiniz bu dosyada bittiğinde sadece dosyanın exit;üstüne koyun . Sadece 2 sentim.


1

Creed Bratton, Bu tür kodları çağırmak her zaman riskli olacaktır. Twitter.php'den Mage.php'yi aradığınız için yapmanız gerekenler put proper file permission for twitter.php. Ya da başka herhangi bir kullanıcı twitter.php kodunuzu yeniden yazabilir.Other wise it does not create any issue.


Bu dosya için standart 644 dosya izinleri iyi olmalıdır. Ayrıca PHP dosyalarının web sunucusu kullanıcısı için sadece okuma iznine ihtiyaç duyduğunu unutmayın; bu nedenle, dosyanın herhangi bir nedenden dolayı düzenlenmesini kısıtlamak için bundan yararlanmak istiyorsanız.
Jonathan Hussey

Teşekkürler @JonathanHussey ... Tavsiyeniz için
Amit Bera

2
Neden .. oy verdim .. Açıklayabilir miyim
Amit Bera

Aşağı oyu açıklamadıklarında nefret ediyorum.
sparecycle

Bunun biraz açıklığa ihtiyacı vardır, kolayca yanlış anlaşılabilir: 1) bu bağlamda "kullanıcı" sunucudaki bir kullanıcı, yani sunucuya zaten erişimi olan biri anlamına gelir. 2) bu, dosyanın Mage.php dosyasını içermesiyle hiç ilgili değildir. Birisi sunucunuza erişebiliyorsa ve dosya yazabiliyorsa, kodu herhangi bir dosyaya ekleyebilir (veya genellikle 777 olarak ayarlanan /
media'da
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.