Tamam ben bu konuda ama kullanabileceğiniz bazı sunucularda ayrıntıları hatırlayamıyorum
$_GET['var'] URL bir değişken erişmek için $var yerine, ben bu kötü olduğunu biliyorum ama neden kötü ben hatırlayamıyorum?
Sana Register Globals demek düşünüyorum.
Onlar EGPCS değişkenleri (Environment, GET, POST, Çerez, Sunucu) herhangi bir kaynaktan gelebilir beri bu değişken değerlerin kaynağını ayırt edemez çünkü bunları kullanmak gerekir.
Yani bir değer $_ENV['var']
, $_GET['var']
, $_POST['var']
den ise ya $var
, sen diyemezsin, {[(varsa 4)]} veya $_SERVER['var']
.
Özelliği Register Globals denilen ve insanların koduna değişkenleri enjekte için izin verir. the documentation örnekler için bakınız; Burada biri:
<?php
// define $authorized = true only if user is authenticated
if (authenticated_user()) {
$authorized = true;
}
// Because we didn't first initialize $authorized as false, this might be
// defined through register_globals, like from GET auth.php?authorized=1
// So, anyone can be seen as authenticated!
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
Eğer sunucu varsa register_globals
php.ini dosyasında 1 (veya true) ayarlanmış olduğunu kullanabilirsiniz.
Bir noktada, bu varsayılan olarak devre dışı olmaya başladı, ve uygulamalar bu kötü bir uygulama olmasının bir nedeni olduğu, kırmaya başladı.
Sen php.ini
değişkenler here bir listesini görebilirsiniz.
Bunu yapabilirsek, o zaman "register_globals" açıktır. Bir değişken nereden geldiğini bilmiyor olacak ve herhangi bir kullanıcı URL yoluyla enjekte edebilir olanlar ile değişkenleri karışır çünkü bu çok kötü. Devamı burada: http://www.php.net/manual/en/security.globals.php
Üye Ol globallerinin çalışacak ama PHP bir gelecek sürümünde going to go away bulunuyor. O gerçekten etkin olması yanlış olduğunu cabası.
Sen daha kontrollü bir davranış için extract() kullanabilirsiniz. Bu değişkenler gibi yerel bağlam içine (bu durumda, $ _GET) Bir dizinin anahtarları çıkartacaktır. Onlar mevcut değişkenleri ile çarpışır kalmamak onlara ortak bir önek verebilir. Ve emin sadece beklenen değişkenleri alıyoruz yapmak için önceden bir dizi filtre edebilirsiniz.
int extract( $var_array [, $type = EXTR_OVERWRITE [, $prefix ]] )
Simge tablosuna dahil bir dizi değişkenleri aktarın.