PHP IFRAME erişimini kısıtlayarak

7 Cevap php

Ben sitelerin bir çift gelen bir IFRAME olarak erişilebilir olacak PHP kullanarak küçük bir web sayfası oluşturma. SADECE "onaylanmış" siteleri içinde çalışmak için bu siteye erişimini kısıtlamak isteyen değil, diğer siteler veya doğrudan erişilen ediyorum. Herkes herhangi bir öneriniz var mı? Bu bile mümkün mü? PHP site Apache olacak ve içeriği iframing sitelerinde muhtemelen. NET olacaktır.

Tıpkı uzun bir onaylanmış sitede iframe'd bulunuyor gibi, herhangi bir site sayfasını görebilirsiniz, netleştirmek için. Ben doğrudan erişmesini engellemek istiyorum. Ben kurabiye bir çözüm olabilir düşünüyorum, ama emin değilim.

7 Cevap

Bütün büyük fikirler için teşekkürler! Ben gitmek için gidiyorum çözüm onaylı "iframing" sitesi tarafından belirlenen bir oturum tanımlama olduğunu düşünüyorum. Gerçekten belirlenen Birisi hala içeriği almak mümkün olacak, ama ben her iki tarafta paylaşılan gizli çeşit dayalı iyi bir "gizli" algoritması ile geliyor istismar en önleyebilir düşünüyorum ve onaylı site kurdunuz benim PHP site tarafından okunacaktır oturum tanımlama. Çerez geçerli ve benim kriterlerini karşılarsa, aksi takdirde ben olmaz, içeriğini görüntülemek edeceğiz. Ben koruyorum bilgiler sadece istismar ediliyor önlemek için çalışıyorum, kritik değildir.

Ne yazık ki bu mümkün olacak değildir.

Eğer sayfa başka bir çerçeve içinde gömülü olup olmadığını görmek için kontrol edebilirsiniz, ancak JavaScript bazı insanların tarayıcılarda kapatılabilir gibi bu kusursuz olmayacaktır Javascript kullanma.

Örneğin, bu niyeti buysa sayfanızı Reparent için aşağıdaki javascript çalıştırabilirsiniz:

if (top.location != location) {
  top.location.href = document.location.href ;
}

Bu konuda düşünme ... Ben bu tamamen güvenli olduğunu ikna, ama ben daha düşünmek ise burada bir atış değilim -

Bunu yapabileceği tek yolu, size onları kontrol ise içeri gömülü olacağını siteleri kontrol ederseniz, çerçeve gelen çerçeveye, şifreli, vakit geçirebiliriz olduğunu:

 <iframe src="http://yourdomain/frame.php?key=p21n9u234p8yfb8yfy234m3lunflb8hv" />

frame.php sonra (10 saniye diyelim) küçük bir delta içinde zaman bulmak mesajı çözer. Frame.php tek kabul edilebilir siteleri zaman şifreli olabilir bilir, çünkü o kendisini görüntülemek için tamam bilir. Aksi takdirde, hiçbir şey çıktılar.

Başka bir şey, bu javascript veya HTTP_REFER olsun, sahte kapalı, ya da atlatılabilir.

Ve aslında, bu url ile, bir saldırganın, her yerde karesini göstermek mümkün olacak sürece 10 saniye içinde kullanıcı yükler o kadar. Yani saldırgan sadece kabul siteyi kazımak ve anahtar kapmak olur. Bu tehdit modeli sizin için kabul edilemez ise - o zaman gerçekten (belki daha da karmaşık bir protokol hariç) yapabileceğiniz bir şey yoktur.

Ben bu google adsense uygulayan aynı şekilde uygulamak. Bunun yerine onları onları bir hesap numarası içerir bazı javascript embed var yerine, kendi sitesinde iframe embed kodu sahip:

<script type="text/javascript"><!--
myiframe_client = "12345";
myiframe_width = 728;
myiframe_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://www.example.com/scripts/show_iframe.js">
</script>

En azından bu bir başına hesap bazda iframe içeriğini görüntüleyen kim yönetebilirsiniz yolu. Biri yetkisiz girişimleri sizin iframe kullanmak varsa, hesabınızı devre dışı bırakabilirsiniz. Ayrıca yetkisiz erişimi engellemek için (tarayıcı güvenlik sınırları dahilinde) javascript ile belgenin özelliklerini inceleyebilirsiniz.

Ekran kazıma burada olası bir çözüm olabilir.

Sitenize onaylanmış siteler web sunucularından gelen sadece istekleri kabul ve onlara bir güvenlik belirteci sorunu üzerindeki erişim listesini ayarlayın. Bu kolay bir parçasıdır.

Onların ucunda dev ekibi içerik almak ve sonra (herhangi bir ilgili adresler yeniden sonra) kullanıcılara görüntülemek için kurulum için bir geçişi servlet gerekir.

Bu oldukça ilgili olabilir, ancak siteyi erişen kim iyi kontrol mümkün olacaktır. Sadece iki webserverlarda arasında iletilen edilmelidir beri Ayrıca, ihraç herhangi bir güvenlik belirteci, web kullanıcı için görünür olmayacaktır.

MD5 yapabilirsiniz (veya daha fazla güvenlik için şifrelemek) gizli tuz + tarihini kullanarak, istemci IP ve iframe src url parametre olarak geçmek bu. Iframe size aynı şeyi yapmak ve sonuç parametresi olarak aynı olup olmadığını kontrol edin; değilse, erişimi reddetmek

Eğer belirli bir dize içeren sağlamak için $_SERVER['HTTP_REFERER'] kontrol edemez miydin?

if (strpos('http://example.com', $_SERVER['HTTP_REFERER']) !== false) {
    // allowed
}

Sizin durumunuzda eğer in_array() ardından kontrol, ilk adresini ayrıştırmak isteyebilirsiniz.

Insanlar yönlendirme, BUT belki 2 sunucuları arasında diğer bazı iletişim ile 1 kullanım tuşları çeşit sahte yapabileceği gibi bu aptal kanıt olmayacak. Anahtar kullanılmış ise, o zaman hayır gitmek.