• 02-07-2021, 14:24:05
    #1
    Merhaba,

    Üye olmayan kişilerin sayfayı görme yetkisi vermediğim bir projem var. Fakat sayfaya ulaşabilirlerse veya sayfa altında get ile çalışan url yapısını bilirlerse json dosyasından veri çalmaları muhtemel. Hatta yapanların olduğunu düşünüyorum.
    Önlemek için nasıl bir önlem alabilirim?


    Teşekkürler, İyi çalışmalar.
  • 02-07-2021, 14:36:26
    #2
    Session kullanıyorsanız aşağıda ki gibi bir yapı işinizi görecektir. json dosyasının başında SESSION kontrolu yapıp login olunmadıysa die() ile isteği sonlandırabilirsiniz.


    // sayfa.php
    if( $_SESSION['oturum'] === true ){
        echo 'Sayfa içeriğini Göster ve Json dosyasına get yap (json_get.php)';
    }else{
        echo 'İçeriği Gizlei Giriş yap, Kayıt ol.';
    }
    
    
    //json_get.php
    if( $_SESSION['oturum'] !== true ){
        die();
    }
    
    // Json içerik oluştur
    /*
    .
    .
    .
    .
    */
    // Json içerik oluştur
  • 02-07-2021, 14:40:54
    #3
    Selamlar Xhr atarak veriyi çekiyorsanız cross orign koruması ekleyebilirsiniz sayfaya veya xhr korumasida ekleyebilirsiniz. Verileri farklı bir yerden çekiyorsanız kendi dosyanızı oluşturup bu işlemleri yapabilirsiniz.
  • 02-07-2021, 14:44:01
    #4
    mikropiks adlı üyeden alıntı: mesajı görüntüle
    Session kullanıyorsanız aşağıda ki gibi bir yapı işinizi görecektir. json dosyasının başında SESSION kontrolu yapıp login olunmadıysa die() ile isteği sonlandırabilirsiniz.


    // sayfa.php
    if( $_SESSION['oturum'] === true ){
        echo 'Sayfa içeriğini Göster ve Json dosyasına get yap (json_get.php)';
    }else{
        echo 'İçeriği Gizlei Giriş yap, Kayıt ol.';
    }
    
    
    //json_get.php
    if( $_SESSION['oturum'] !== true ){
        die();
    }
    
    // Json içerik oluştur
    /*
    .
    .
    .
    .
    */
    // Json içerik oluştur
    Teşekkür ederim.
    Session verisi olsa bile bu kısımı görmesini istemiyorum.
    Başka değerli görüşünüz var mı?
  • 02-07-2021, 14:45:11
    #5
    CodeDev adlı üyeden alıntı: mesajı görüntüle
    Selamlar Xhr atarak veriyi çekiyorsanız cross orign koruması ekleyebilirsiniz sayfaya veya xhr korumasida ekleyebilirsiniz. Verileri farklı bir yerden çekiyorsanız kendi dosyanızı oluşturup bu işlemleri yapabilirsiniz.
    Teşekkür ederim. Bir örnek var mı?
  • 02-07-2021, 14:48:04
    #6
    actionmax34 adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim. Bir örnek var mı?
    Rica ederim, şuanda mobilim biraz sonra kod hazırlayıp size pm atarim
  • 02-07-2021, 15:52:14
    #7
    Hocam kabaca 2 fonksiyon oluşturdum. Fonksiyonlardan biri kod üretiyor diğeri de kodu çözümlüyor. Üretilen kod her saniye değişmekte ve sizin belirlediğiniz zaman toleransına göre doğrulama fonksiyonu çalışmakta. Ben kod üretmek için hex2bin ve bin2hex kullandım. Siz daha farklı fonksiyonlar deneyebilirsiniz. Örnekte 5 sn toleranslı kullandım. 5sn sonra kullanılacak sistem içi veya sistem dışı kod çalışmayacaktır.

    Site Kökünden gelen gizli anahtar: (Bu anahtar hem ön sayfada hem de json)
    $gizli_anahtar = '123456Aa';
    Kod Üreten ve Çözen Fonksiyonlar:
    function olustur($gizli_anahtar = ''){
        return bin2hex($gizli_anahtar . '__' . time());
    }
    
    function coz($gizli_anahtar, $kod){
        $sure_fark = 5; // x süre farkı kadar opsiyon tanı
        $kod_coz   = hex2bin($kod);
        $kod_bol   = explode('__', $kod_coz);
        if( count($kod_bol) == 2 && $kod_bol[0] == $gizli_anahtar ){ // gizli anahtar eşleşti ise
            if( $kod_bol[1] + $sure_fark >= time() ){ // süre fark kontrol
                return true;
            }
        }
        return false;
    }
    Örnek Kullanım:


    /*
    Kullanım:
    
    Get İsteği Yapan Sayfa:
    Get isteği yapılacak sayfada kod oluşturulur ve url'den get data olarak gönderilir.
    Örn:
    $kod = olustur($gizli_anahtar); // return hex (Örn: 31323334353641615f5f31363235323238303730)
    Örn Url: site.com/json.php?code=31323334353641615f5f31363235323238303730
    
    
    Json Oluşturan Sayfa:
    Gelen code değeri alınır ve çözümlenir.
    $code = isset($_GET['code']) ? $_GET['code'] : '';
    $cozumle = coz($gizli_anahtar, $code); // return true/ false
    if( !$cozumle ){ // Kodu Çözümle
        die(); // Çözümleme Hatalı ise yürütmeyi durdur.
    }
    
    
    */
  • 02-07-2021, 15:59:00
    #8
    mikropiks adlı üyeden alıntı: mesajı görüntüle
    Hocam kabaca 2 fonksiyon oluşturdum. Fonksiyonlardan biri kod üretiyor diğeri de kodu çözümlüyor. Üretilen kod her saniye değişmekte ve sizin belirlediğiniz zaman toleransına göre doğrulama fonksiyonu çalışmakta. Ben kod üretmek için hex2bin ve bin2hex kullandım. Siz daha farklı fonksiyonlar deneyebilirsiniz. Örnekte 5 sn toleranslı kullandım. 5sn sonra kullanılacak sistem içi veya sistem dışı kod çalışmayacaktır.

    Site Kökünden gelen gizli anahtar: (Bu anahtar hem ön sayfada hem de json)
    $gizli_anahtar = '123456Aa';
    Kod Üreten ve Çözen Fonksiyonlar:
    function olustur($gizli_anahtar = ''){
        return bin2hex($gizli_anahtar . '__' . time());
    }
    
    function coz($gizli_anahtar, $kod){
        $sure_fark = 5; // x süre farkı kadar opsiyon tanı
        $kod_coz   = hex2bin($kod);
        $kod_bol   = explode('__', $kod_coz);
        if( count($kod_bol) == 2 && $kod_bol[0] == $gizli_anahtar ){ // gizli anahtar eşleşti ise
            if( $kod_bol[1] + $sure_fark >= time() ){ // süre fark kontrol
                return true;
            }
        }
        return false;
    }
    Örnek Kullanım:


    /*
    Kullanım:
    
    Get İsteği Yapan Sayfa:
    Get isteği yapılacak sayfada kod oluşturulur ve url'den get data olarak gönderilir.
    Örn:
    $kod = olustur($gizli_anahtar); // return hex (Örn: 31323334353641615f5f31363235323238303730)
    Örn Url: site.com/json.php?code=31323334353641615f5f31363235323238303730
    
    
    Json Oluşturan Sayfa:
    Gelen code değeri alınır ve çözümlenir.
    $code = isset($_GET['code']) ? $_GET['code'] : '';
    $cozumle = coz($gizli_anahtar, $code); // return true/ false
    if( !$cozumle ){ // Kodu Çözümle
        die(); // Çözümleme Hatalı ise yürütmeyi durdur.
    }
    
    
    */
    Çok teşekkür ederim. Benim için güzel bir aydınlanma oldu...
  • 02-07-2021, 23:00:07
    #9
    A = Uyeler sayfasına erişim izni
    B = Ürünler sayfasına erişim izni
    C = Üye ayarları sayfasına erişim izni
    ....

    Kullanıcı eğer Üyeler sayfasına erişmesini istemiyorsanız.
    Kullanıcının yetki izinlerini bir sütünda tutun ve login olduktan sonra session'a atın.

    Daha sonra sayfa içerisine;

    // Örnek yetkiler; "ABCDEFGHIJKLM";
    
    if (strpos($_SESSION['Yetkiler'],"A")) { // Örneğin üyeler sayfasına erişmesini istemiyorsanız, A yetkisini kontrol edebilirsiniz.
    echo "Bu sayfaya erişim izniniz yoktur!";
    exit;
    } else {
    //Çalışacak kodlar.
    }