Bir Öğrenci Klasiği – AUG

Amfphp ve Güvenlik


Merhaba arkadaşlar. Bir sistemde en büyük sorunlardan ve gereksinimlerden birisi de güvenliktir. Çok iyi bir sistemler bile ufacık bir açıktan dolayı uçmuştur. İşte bu yazıda Flash geliştiricilerinin dikkat etmesi olan bir konuyu göreceğiz; Amfphp ve Güvenlik. Biliyorsunuz ki Amfphp ile bağlantı sağlamak oldukça basit; adres ve parametreleri yolluyoruz. Fakat kötü niyetli kişiler de bizim Amfphp dosyalarımız ile bağlantı kurarsa?

Bunun için birkaç ufak çözüm var. Eski sürümde kodlamalardan kaynaklanan problemler vardı fakat kapatıldılar. Yine de uzak bir noktadan bağlantı kurulabiliyor. Bunun çözümü aslında oldukça basit; Cross-domain Peki bu Cross-domain nedir? Sadece Crossdomain mi kullanacağız? Tabi ki hayır başka çözüm yollarıda var!

Cross-domain Türkçe anlamı etkiler arası. Cross-domainlerin amacı sizin hostunuz üzerinde bulunan dosyalara ( Flash türevi ) uzaktan ulaşımı engellemektir. Kendileri xml yapısındadır. Bizim buraya yazacağımız adresler dışında kimse içeriye ulaşamaz. Bu sayede swf dosyalarına birşey gömülemez, uzaktan çalıştırılamaz.

Örnek bir Crossdomain;

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>

Bu dosyada izin verilen domainler satırında * (joker) ifadesi var. O yüzden her yerden ulaşım sağlanabilir. Fakat oraya virgül kullanarak sadece belirli site adresilerini yazarsam ve hostumun ana dizinine atarsam dışarıdan ulaşım sadece oradaki adresler tarafından sağlanabilir hale gelecektir. Bu sayede bütün swf ler güvenli olacaktır.

Bir diğer yöntem ise bütün fonksiyonları protected veya private yapıp yani görünmez yapıp tamamen ekrandan kaldırmak. Çünkü Amfphp bu yapıda olan fonksiyonları göremez. Fakat sadece bunu yaparsak yetmez, çünkü swf dosyamızı fla ya çevirirlerse herşeyi görürler. Bu yüzden birde üstüne swf dosyamızı şifrelememiz lazım..

Son olarak bu yöntemi kullanabiliriz. Amfphp PHP dosyaları tarafından çalıştırılıyor. Bu yüzden başka bir çözüm daha var. Bunun için yine PHP’ yi kullanacağız. Normalde Amfphp nasıl çalışır? Gateway.php dosyası adres belirtilerek çağırılır. Sonrasında ise sınıf ve fonksiyon adı belirterek işlem yaptırılır.

Nesne tabanlı yapıda __construct yani açılış fonksiyonları, sınıf açıldığın anda çalıştırılır. Bizde bu yüzden sınıfımızın altına bir açılış fonksiyonu yerleştiriyoruz ve BU PHP DOSYASINA NEREDEN ULAŞTIĞINA bakıyoruz; yani HTTP_REFERER fonksiyonu ile..

<?
class guvenlik {

function guvenlik() {
	$adres = "www.birogrenciklasigi.com";
	$kim = $_SERVER['HTTP_REFERER'];
	if (strpos($kim,$adres) === false) {
		die("Buralar hep bizimdi, hala bizim");
	}
}

}
?>

Burada gördüğünüz gibi guvenlik isimli sınıf çağırıldığı anda alttaki başlangıç fonksiyonu da çağırılıyor. Sonrasında bu dosyayı çaldıran sistemin nereden ulaştığına bakıyoruz. Yani bir swf doyası index.php içerisinde ise referer olarak index.php yi gösterecektir. Peki o dosya nerede? Tabi ki bizim domain adresimizin altında. İşte o adres içerisinde kendi sitemizin adı geçiyorsa işlemlere devam ediyoruz, haa geçmiyorsa o zaman sayfayı öldürüyoruz ki Amfphp hata versin..

Benim size önerim ise bahsettiğim tüm yöntemleri kullanmanız. Bu sayede sadece Amfphp değil bütün dosyalarınız güvende olacaktır..

İşte gördüğünüz gibi büyük bir açığı çok kolayca kapatabiliyoruz. Daha sonra görüşmek üzere hoşçakalın..

Ertuğrul Erkan | yorum yok | Action Script Derslerim | 2009-10-01

Ahkam Kes





Comment Spam Protection by WP-SpamFree

Sosyal

Feed Me FriendFeed Follow Me Vimeo

Yorumlar

Eklentiler

web stats

Feed Me
View my FriendFeed
Mükemmel WordPress sayesinde Bir Öğrenci Klasiği – AUG kuruldu.. Tema tasarım; Ertuğrul Erkan 31 sorgu, 1,094 saniye de yapıldı.