• 31-10-2013, 01:03:06
    #10
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Sanırım şöyle bi' örnek uygulama size fikir verecektir.

    x0.php ;
    <iframe src="x1.php" style="width:100%;height:400px"></iframe>
    x1.php ;
    <?php
    	
    	function detect_ssl() {
    		if(isset($_SERVER["HTTPS"])) {
    			if("on" == strtolower(getenv("HTTPS")))
    				return true;
    			if("1" == getenv("HTTPS"))
    				return true;
    		} else if(isset($_SERVER["SERVER_PORT"]) && ("443" == getenv("SERVER_PORT"))) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    	
    	function detect_referer() {
    		return (array_key_exists("HTTP_REFERER", $_SERVER)) ? getenv("HTTP_REFERER") : null;
    	}
    	
    	function detect_current_url() {
    		$return_val = "";
    		
    		$protocol = (detect_ssl()) ? "https" : "http";
    		$host = getenv("HTTP_HOST");
    		$path = getenv("SCRIPT_NAME");
    		$query_string = (strlen($_SERVER["QUERY_STRING"]) > 0) ? getenv("QUERY_STRING") : null;
    		
    		$return_val .= $protocol . "://" . $host . $path;
    		
    		if(!is_null($query_string))
    			$return_val .= "?" . $query_string;
    		
    		return $return_val;
    	}
    	
    	$redirect_location = "/x2.php";
    	
    	$referer = detect_referer();
    	
    	$current_url = detect_current_url();
    	
    	if(!is_null($referer))
    		setcookie("x_referer_pages", base64_encode(json_encode(array("pages" => array($referer, $current_url)))), (time() + 600));
    	
    	header(sprintf("Location: %s", $redirect_location));
    x2.php ;
    <?php
    	
    	function get_all_referer_pages() {
    		$cookie = (array_key_exists("x_referer_pages", $_COOKIE)) ? json_decode(base64_decode($_COOKIE["x_referer_pages"])) : null;
    		
    		setcookie("x_referer_pages", "", (time() - 600));
    		
    		return $cookie;
    	}
    	
    	var_dump(get_all_referer_pages());
  • 31-10-2013, 09:34:40
    #11
    Burti adlı üyeden alıntı: mesajı görüntüle
    <?php 
    $gelenlink="https://www.r10.net/php/1148724-php-referrer-gelen-url-alma.html#post1068135508";
    $gelmesigerekenlink="giris.php"; 
    
    $bolmeislemi=explode('/',$gelenlink); 
    
    if($gelenlink==end($bolmeislemi)){ 
    echo "doğru geldin"; 
    }else{ 
    echo "yanlış geldin"; 
    } 
    ?>
    edit düzelttim.
    acayip adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım headerle yönlendirme yapıyorsan sorun olabilir bazen. Javascript ile yap yönlendirmeyi.

    Yalnız referrere güvenme. İstenildiği gibi değiştirilebilir. Önemli bir yerde kullanacaksan session kullan veya ip ye göre falan anlık bir hash vs. oluştur
    saintx adlı üyeden alıntı: mesajı görüntüle
    Sanırım şöyle bi' örnek uygulama size fikir verecektir.

    x0.php ;
    <iframe src="x1.php" style="width:100%;height:400px"></iframe>
    x1.php ;
    <?php
    	
    	function detect_ssl() {
    		if(isset($_SERVER["HTTPS"])) {
    			if("on" == strtolower(getenv("HTTPS")))
    				return true;
    			if("1" == getenv("HTTPS"))
    				return true;
    		} else if(isset($_SERVER["SERVER_PORT"]) && ("443" == getenv("SERVER_PORT"))) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    	
    	function detect_referer() {
    		return (array_key_exists("HTTP_REFERER", $_SERVER)) ? getenv("HTTP_REFERER") : null;
    	}
    	
    	function detect_current_url() {
    		$return_val = "";
    		
    		$protocol = (detect_ssl()) ? "https" : "http";
    		$host = getenv("HTTP_HOST");
    		$path = getenv("SCRIPT_NAME");
    		$query_string = (strlen($_SERVER["QUERY_STRING"]) > 0) ? getenv("QUERY_STRING") : null;
    		
    		$return_val .= $protocol . "://" . $host . $path;
    		
    		if(!is_null($query_string))
    			$return_val .= "?" . $query_string;
    		
    		return $return_val;
    	}
    	
    	$redirect_location = "/x2.php";
    	
    	$referer = detect_referer();
    	
    	$current_url = detect_current_url();
    	
    	if(!is_null($referer))
    		setcookie("x_referer_pages", base64_encode(json_encode(array("pages" => array($referer, $current_url)))), (time() + 600));
    	
    	header(sprintf("Location: %s", $redirect_location));
    x2.php ;
    <?php
    	
    	function get_all_referer_pages() {
    		$cookie = (array_key_exists("x_referer_pages", $_COOKIE)) ? json_decode(base64_decode($_COOKIE["x_referer_pages"])) : null;
    		
    		setcookie("x_referer_pages", "", (time() - 600));
    		
    		return $cookie;
    	}
    	
    	var_dump(get_all_referer_pages());
    Yardım eden herkese teşekkürler şimdi deneyeceğim sırayla.




    Ama tam anlaşılamadım galiba.

    Şöyle örnekleyeyim ;

    benim sitem : benimsitem.com

    Başka site : baskasite.com

    O sitede bir kullanıcı girişi var.

    şu şekilde çalışıyor;

    baskasite.com/login.php?go=http://www.benimsitem.com/kullanici_kayitli_mi.php



    Bu url ye yönlendirdiğim zaman , karşılarına bir giriş formu çıkıyor , eğer doğru giriş yapılmışsa benim siteme "kullanici_kayitli_mi.php" dosyama $_GET ile bir değer gönderiyor. ama ben istiyorum ki sadece o $_GET değeri yetmez referrer adresi gerçekten orası mı bilmem lazım.

    benimsitem'e gelen kullanıcının o siteye üye olup olmadığını doğrulamam lazım.

    benim diğer siteye müdahale şansım yok.

    HTTP_REFERER değeri de istediğim sonucu vermiyor.

    örnekleri birazdan deneyeceğim ama kodlara baktığımda cookie bırakarak tanımlama yapıyor sanki. benim diğer sitenin kodlarına müdahale edemediğim için cookie bırakma şansım da yok.
  • 31-10-2013, 23:25:50
    #12
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım bi önceki mesajda belirttiğim üzere, referere kesinlikle güvenemzsin. En basiti bir curl isteğiyle bile istenilen referer gösterilebilir.

    Eğer çok önemli bir yerde kullanacaksan, gönderen domaine müdahalede bulunamıyorsun madem. reklam kodu vs. gibi bir şey se, reklam kodunu javascript olarak ver, js dosyası olarak da kendi domaininden bir php dosyasını kullan.

    <script language="javascript" src="http://senindomainin.com/senindosyan.php"></script>
    gibi ve adamın ip sine göre hash yazdır.
  • 01-11-2013, 10:48:50
    #13
    acayip adlı üyeden alıntı: mesajı görüntüle
    Arkadaşım bi önceki mesajda belirttiğim üzere, referere kesinlikle güvenemzsin. En basiti bir curl isteğiyle bile istenilen referer gösterilebilir.

    Eğer çok önemli bir yerde kullanacaksan, gönderen domaine müdahalede bulunamıyorsun madem. reklam kodu vs. gibi bir şey se, reklam kodunu javascript olarak ver, js dosyası olarak da kendi domaininden bir php dosyasını kullan.

    <script language="javascript" src="http://senindomainin.com/senindosyan.php"></script>
    gibi ve adamın ip sine göre hash yazdır.

    Güvenlik konusunda ilerleme kaydettim.
    Tek kullanımlık şifreler ve tek kullanımlık dosyalar ile aşmaya çalışacağım artık şöyle bir fikrim var.

    ör;
    benimsitem.com adresine giriş yaptı ve benimsitem.com/kontrolpaneli.php adresine geldi.
    burada üyelik doğrula butonuna bastığında

    Alıntı
    baskasite.com/login.php?go=http://www.benimsitem.com/kontrol/as5rttrbfx.php?teksifre=erwer4325rgf
    gibi bir adrese yönlenecek . eğer doğru giriş yapmışsa , onaykodu gibi bir değişken eklenerek geri dönecek.

    Bu tek kullanımlık işlemler 3 dakika geçerli olacak.

    cURL ile giriş yapmaya çalışılsa bile , kontrol paneli üzerinden doğrulama butonu her seferinde farklı bir dosya adresi ve tek kullanımlık şifre üreteceği için cURL ile bağlanacak dosya adresi bilinemeyeceği için bağlantı başarısız olacaktır (inşallah).

    zaten kullanıcı kitlesi dolayısıyla bu kadar güvenlik fazla bile



    Ama sorun devam etmekte, REFERRER bilgisini hala alamadık


    Canlı örnek vermek gerekirse :

    http://www.lezzetmenusu.com/profil_sayfasi.php

    dogrulama linkine tiklandiginda konusarakyaz .com adresine gidiyor ama ref adresinde lezzetmenusundan gidilen adres gorunuyor. yani bir önceki adres değil de iki önceki adres gorunuyor.

    sorunu hala aşamadık
  • 03-11-2013, 16:55:04
    #14
    istediğin şu gibi birşey mi yanlış mı anlıyorum

    if($_SERVER['HTTP_REFERER']== "http://sitem.com/sayfam.php")
    {
    header("location: http://refererdoğruişlemedevamet.com/sayfa.php");

    }
    else
    {
    echo "bu sayfaya başka siteden ulaşılamaz";
    }
  • 04-11-2013, 13:17:48
    #15
    basename($_SERVER['SCRIPT_FILENAME']); // git.php
  • 04-11-2013, 16:44:56
    #16
    yok hocam malesef, şöyle algoritmasını yazayım belki daha iyi olur.

    öncelikle iki farklı site var
    1 ) benimsitem.com
    2) baskasite.com
    baskasite'nin kodlarına müdahale şansım ve yetkim yok.


    Sistem şöyle çalışır.

    1 ) kullanıcı benimsitem'e üye olur. Normal işlemlerine devam eder.
    2 ) benimsitem üzerindeki profil sayfasına gider ve DOĞRULAMA butonuna basar.
    3 ) Basılan buton kullanıcıyı bir tek kullanımlık doğrulama kodu ile birlikte baskasite.com adresinin kullanıcı giriş sayfasına yönlendirir.
    4 ) kullanıcı baskasite.com giriş formuna bilgilerini yazar ve giriş yapar.

    Eğer kullanıcı adı ve giriş başarılı ise ;
    5 ) kullanıcı baskasite.com'a giriş yapmış olur ve sistem gönderilmiş olan tek kullanımlık doğrulama kodu ile birlikte esktradan bir onay kodu vererek kullanıcıyı tekrar benimsitem.com adresine yönlendirir.
    6 ) benimsitem'e kullanıcı onay kodu ile gelir.
    işte bu 6. maddede benim bu onay kodu dışında ekstradan kullanıcının baskasite.com adresinden geldiğini teyit etmem lazım.

    şu ana kadar sağolsun bir kaç kişi yardımcı olmaya çalıştı ama malesef gelen referer kodlarının hiçbirisi baskasite.com adresini vermedi.

    durum bundan ibaret, umarım yardımcı olan çıkar
  • 06-11-2013, 12:12:00
    #17
    Farklı bilgisayarda denediniz mi?
  • 06-11-2013, 22:11:04
    #18
    M y adlı üyeden alıntı: mesajı görüntüle
    Farklı bilgisayarda denediniz mi?
    denedim hocam malesef onda da olmadı.

    şöyle bir şey hazırladım deneme yapmak için .
    daha anlaşılır olacak inşallah

    http://www.konusarakyaz.com/giris.php?url=http://www.lezzetmenusu.com/gelen.php