Bunun üzerine Register Globals vardı bir yönetici sistem sabitleme değer mi?

6 Cevap php

Ben bazı diğer siteler ile birlikte, ben hatalar için test etmek için yeni bir sunucuya kopyalanır ve canlı koyduk bir yönetici sitesi var.

Admin üzerinde Register Globals gibi görünüyor ve 300 php dosyaların çoğu için kullanıyor.

Yine de bu sisteme giriş zorunda olduğu gerçeğine dayanarak kodu tüm değişkenleri yeniden çalışma hafta değer mi?

Yoksa gelecekte hiçbir yeni özellik eklemek gibi ben her sayfayı düzeltmek olacağını mutlu olabilir mi?

Does Register Globals leave problems in code that has been cleaned, if we don't fix all at once? I'm guessing it could as $user_id can be set by any global.

6 Cevap

Bu uygulama aynı zamanda diğer birçok kalitesiz programlama uygulamaları ile çevrili olabilir. (300 php dosyalarını emri uygulaması ne kadar büyük?). Bu durumda ise, onu olduğu gibi app bırakın ve bakım zaten çok zahmetli hale gelmiştir eğer iyi çerçeve üstüne sıfırdan yeni bir sürümünü kod için iyi bir fikir olabilir.

Ben php.ini itibaren register_globals devre dışı bırakmak ve bir şey gibi $ _REQUEST, $ _GET veya $ _POST, gelen özler değişkenleri her komut üstünde bir kod bloğu koymak istiyorum:

$nVars = extract($_GET, EXTR_SKIP);

Yukarıdaki kod geçti dizideki anahtar olarak aynı adı değişkenleri kaydedecektir. Bu hızla eski register_globals etkin kod üstlenmeden için yararlıdır, ama dikkatli olmalısınız. PHP extract() belgelerine aşağıdaki alıntıyı okuyun:

Do not use extract() on untrusted data, like user-input ($_GET, ...). If you do, for example, if you want to run old code that relies on register_globals temporarily, make sure you use one of the non-overwriting extract_type values such as EXTR_SKIP and be aware that you should extract in the same order that's defined in variables_order within the php.ini.

Register_globals is güvensiz ve kullanılmamalıdır. Ben olsaydım kodu yeniden, ya da sıfırdan uygulamanın kendisi olacaktır. Bu bir yönetici sistem, ve hiç kimse kendisi erişebilirsiniz URL ve bu nedenle yalnızca yönetici bilir Ancak, o zaman (sadece emin olun onun URL gizli kalır) değiştirmeyi değil ince olmalıdır

Bazı çok ciddi güvenlik sorunlarına yol açabilir, bu tür o kodlu nasıl bağlıdır.

Örneğin:

<?php
// $loggedin comes from $_SESSION['loggedin']
if($loggedin)
{
    echo 'Loggedin!';
}
else
{
    echo 'Please login';
}
?>

Burada temel sorun, $ loggedin nereden geldiğini komut kontrol olmamasıdır. Yani yapardı script.php? Loggedin = 1, I ~ 300 PHP dosyaları olduğu gibi, her şeyi kontrol etmek zor olurdu görünce oturum olacaktır.

Yani tutarak (çok) kötü bir fikirdir. Hatta bunu kullanmak istiyorum. Htaccess erişimi engellemek için, muhtemelen ileride sorunlara (IE web hoster register_globals kapalı ayarı) ve karışıklığa yol açacak.

Tüm sistemi yeniden yazmayın. Sistem çalışıyor ve gitmek gibi kayıtsızca yükseltmek gerekir Eğer sıfırdan başlamak gerekmez.

Ben bilgi hassasiyetine dayalı Register Globals ele önemini tartmak istiyorum.

Bir iyi inşa sistemdir Eğer sitede kullanılacak ve sadece sayfaların üstünde onları kullanılabilir hale ne değişkenleri görmek gerekir. Bu, $ küresel $ yoluyla veri çekmek fonksiyonlardan herhangi dikkatli olun;

Veri korumak için önemli ise benim oyum, işi yapmaktır.

Bu şeyler sizin oldukça lo t bağlıdır. Sadece birkaç isim:

  1. Şirketin güvenlik politikası
  2. Yeniden yazmak için Maliyet
  3. Uygulamanın önemi
  4. Uygulamanın diğer parçaları üzerindeki etkisi.
  5. vb