Programlamadili.Net Yeni Nesil Programlama Portali
Makale Ara: 
Kullanıcı Adı : Şifre :
  • Makale Kategorileri
Anasayfa
ACPI [0]
Action Script [5]
Ajax [7]
ASP [12]
ASP.NET [23]
Assembly [3]
Bash [1]
C [4]
C# [9]
C++ [10]
Cobol [1]
Delphi [31]
Flash [5]
Html [9]
JAVA [36]
Java Script [12]
JSF [2]
Jsp [5]
Lua [1]
Matlab [2]
MySQL [30]
Oracle [1]
Pascal [31]
Perl [4]
Photoshop [2]
PHP [150]
Python [8]
REXX [6]
Ruby [1]
SEO [5]
Visual Basic [37]
  • Gorsel Ders Kategorileri
Asp [25]
Asp.Net [5]
Csharp [33]
Delphi [3]
Fireworks [4]
Flash [10]
Java Script [0]
Photoshop [0]
PHP [54]
Vb.Net [9]
Visual Basic [4]
  • Dil
English
Deutsch
deutsch
  • Reklam Alani
PHP / Register GlobalsKapalı İken Predefined Variables ların Çalışır Hale Gelmesi
Register GlobalsKapalı İken Predefined Variables ların Çalışır Hale Gelmesi
Yazar: SahinBey
Eklenme: 28/03/08    Okunma: 152    
 
 

Php.4.1.0 üzerindeki versiyonlarda "register_globals_off" durumunda iken ya da daha eski versiyonlarda mesela formdan gelen bir değişkeni tanımlarken;



 Kod Çizelgesi     Kod Dili: php
$degisken = $_POST['degisken'] ;
$degisken = $_GET['degisken'] ;




gibi tanımlamamız gerekmektedir.

Aslında bu şekilde olması sistemimizin güvenliği açısından çok mantıklı bir uygulamadır ve tavsiye edilen bir uygulamadır.

Ancak devamlı bu şekilde yazmak ya da mevcut bir sistemde "register_globals_on" şeklinde uyarlanmış ise bu sizin canınızı sıkabilir.Bunun için tüm GET,POST,SESSION vb. işlemlerine kolay yoldan bir çözüm yolu üretelim;



 Kod Çizelgesi     Kod Dili: php
if (!isset($_GET)) { $_GET = &$HTTP_GET_VARS;}
if (!isset($_POST)) { $_POST = &$HTTP_POST_VARS;}
if (!isset($_SESSION)) { $_SESSION = &$HTTP_SESSION_VARS;}
if (!isset($_SERVER)) { $_SERVER = &$HTTP_SERVER_VARS; }
if ( !isset($_ENV)) { $_ENV = &$HTTP_ENV_VARS;}
if ( !isset($_COOKIE)) { $_COOKIE = &$HTTP_COOKIE_VARS;}
if ( !isset($_FILES)) { $_FILES = &$HTTP_POST_FILES;}
if ( !isset($_REQUEST)) { $_REQUEST = &$_GET&$_POST&$_COOKIE&$_FILES;}



// Daha sonra extract komutu ile tüm predefined variables ları çıkartıyoruz ve uygulama aşamasına geçiriyoruz.


 Kod Çizelgesi     Kod Dili: php
if (isset($_GET)) { extract($_GET); }
if (isset($_POST)) { extract($_POST); }
if (isset($_SESSION)) { extract($_SESSION); }
if (isset($_SERVER)) { extract($_SERVER); }
if (isset($_ENV)) { extract($_ENV); }
if (isset($_COOKIE)) { extract($_COOKIE); }
if (isset($_FILES)) { extract($_FILES); }
if (isset($_REQUEST)) { extract($_REQUEST); }




ya da array işlemi ile bu işlemi daha basit bir şekilde yapabiliriz.Bu kısım Joomla içerik sisteminin kodlamış olduğu globals.php kısmından alıntı yapılarak düzenlenmiştir.




 Kod Çizelgesi     Kod Dili: php
$degiskenliste = array("_GET", "_POST", "_COOKIE", "_SERVER"); foreach($degiskenliste as $globalliste){
$listele = array_keys($$globalliste);
foreach($listele as $liste){
$$liste = trim(${$globalliste}[$liste]);
}
}



şeklinde array komutu ile yapabileceğimiz gibi ;

// Bu kısım Joomla içerik sistemi globals.php dosyasından alıntı yapılarak düzenlenmiştir.



 Kod Çizelgesi     Kod Dili: php
define( 'registerayari', 1 ); 

// Öncelikle register globals "on" ya da "off" durumunu belirliyoruz.Eğer burada registerayari "1" ise register globals "off" modundadır ve "on" moduna çevireceğiz demek istiyoruz.

//Spoofing yöntemiyle saldırıyı engellemek için fonksiyon yazalım


 Kod Çizelgesi     Kod Dili: php
function checkInputArray( &$array, $globalise=false ) {
    static $banned = array( '_files', '_env', '_get', '_post', '_cookie', '_server', '_session', 'globals' );

    foreach ($array as $key => $value) {
        if (in_array( strtolower( $key ), $banned ) ) {
            die( 'Geçersiz Değişken <b>' . implode( '</b> or <b>', $banned ) . '</b> passed to script.' );
        }
        if ($globalise) {
            $GLOBALS[$key] = $value;
        }
    }
}


// Register globals modunu off durumuna çevirmek için bir fonksiyon yazalım;


 Kod Çizelgesi     Kod Dili: php
function unregisterGlobals () {
    checkInputArray( $_FILES );
    checkInputArray( $_ENV );
    checkInputArray( $_GET );
    checkInputArray( $_POST );
    checkInputArray( $_COOKIE );
    checkInputArray( $_SERVER );

    if (isset( $_SESSION )) {
        checkInputArray( $_SESSION );
    }

    $REQUEST = $_REQUEST;
    $GET = $_GET;
    $POST = $_POST;
    $COOKIE = $_COOKIE;
    if (isset ( $_SESSION )) {
        $SESSION = $_SESSION;
    }
    $FILES = $_FILES;
    $ENV = $_ENV;
    $SERVER = $_SERVER;
    foreach ($GLOBALS as $key => $value) {
        if ( $key != 'GLOBALS' ) {
            unset ( $GLOBALS [ $key ] );
        }
    }
    $_REQUEST = $REQUEST;
    $_GET = $GET;
    $_POST = $POST;
    $_COOKIE = $COOKIE;
    if (isset ( $SESSION )) {
        $_SESSION = $SESSION;
    }
    $_FILES = $FILES;
    $_ENV = $ENV;
    $_SERVER = $SERVER;
}

//Register globals modunu "on" moduna çevirmek için bir fonksiyon yazalım

function registerGlobals() {
    checkInputArray( $_FILES, true );
    checkInputArray( $_ENV, true );
    checkInputArray( $_GET, true );
    checkInputArray( $_POST, true );
    checkInputArray( $_COOKIE, true );
    checkInputArray( $_SERVER, true );

    if (isset( $_SESSION )) {
        checkInputArray( $_SESSION, true );
    }

    foreach ($_FILES as $key => $value){
        $GLOBALS[$key] = $_FILES[$key]['tmp_name'];
        foreach ($value as $ext => $value2){
            $key2 = $key . '_' . $ext;
            $GLOBALS[$key2] = $value2;
        }
    }
}

//Daha sonra çıktımızı alalım

if (registerayari == 0) {
    // register gloal durumunu "off" moduna çeviren fonksiyonu çalıştırır
    unregisterGlobals();    
} else if (ini_get('register_globals') == 0) {
    // php.ini dosyamızdaki register_globals durumuna bakar ve off yani 0 ise "on" moduna geçecek fonksiyonu çalıştırır
    registerGlobals();
} else {
    // php.ini dosyamızdaki register_globals durumuna bakar ve on olduğunu görürse spoofine karşı önlemini alır.
    checkInputArray( $_FILES );
    checkInputArray( $_ENV );
    checkInputArray( $_GET );
    checkInputArray( $_POST );
    checkInputArray( $_COOKIE );
    checkInputArray( $_SERVER );

    if (isset( $_SESSION )) {
        checkInputArray( $_SESSION );
    }
}


 



Taglar: PHP De ereg ve eregi soundex fonksiyonu - php 10 Dk da Php Site Yap 32-bit sifreleme algoritmasi array_count_values komutuna giris Array_map komutu ile devasa kolayliklar Baska Hosttan Sunucuya Dosya Yukleme Belirledigimiz Suredeki Verileri Listelemek charset & encoding problemleri COOKIE Tanimlama Bilgisi nedir ctype_alpha ve ctype_alnum Fonksiyonu Degisken Nedir Nasil Kullanilir Degiskenler Dizi Degiskenler, Tek ve Cok Boyutlu Diziler dowhile dongusu Dosya Kontrolleri Dosya konumu file Path ve konum ayristirma URL Parsing ffmpeg-php api dokumentasyon for dongusu foreach dongusu Formdan Bilgi Alma Get Methodu Ile Profil Sistemi Yapalim GZIP Kutuphanesi ile Daha Hizli Sayfalar Htaccess Ile Korumali Sayfalar Olusturmak htmlentities Fonksiyonu

Isminiz:
E-mail adresiniz:
Güvenlik Kodu:
  
 

 

Istatistikler ,
Sitemizde su anda 31 kategori, 453 makale , 147 görsel ders ve 143 Ziyaretci bulunmaktadir...
Toplam üye sayimiz : 951

Web Stats Ferdi Tayfur | Memur Muzaffer | Bedava Mp3 indirin | Visual Basic | Rss| Fnex.Net| Forum Dünyasi
Pagerank

Copyright © 2007 Programlamadili.net - Programlama & Tasarim: Recep Ikiz & Ferdi Küçük

| Site Haritasi |

"Ne Aradığını Bilmeyen Bulduğunun Farkına Varamaz "
ACPI Programlama dili, Action Script Programlama dili, Ajax Programlama dili, ASP Programlama dili, ASP.NET Programlama dili, Assembly Programlama dili, Bash Programlama dili, C Programlama dili, C# Programlama dili, C++ Programlama dili, Cobol Programlama dili, Delphi Programlama dili, Flash Programlama dili, Html Programlama dili, JAVA Programlama dili, Java Script Programlama dili, JSF Programlama dili, Jsp Programlama dili, Lua Programlama dili, Matlab Programlama dili, MySQL Programlama dili, Oracle Programlama dili, Pascal Programlama dili, Perl Programlama dili, Photoshop Programlama dili, PHP Programlama dili, Python Programlama dili, REXX Programlama dili, Ruby Programlama dili, SEO Programlama dili, Visual Basic Programlama dili,
Reklam alanı