Amfphp ve Güvenlik
Tarih: Ekim 1st, 2009 | Yazar: Ertuğrul Erkan | Kategori: Action Script | Etiketler: amfphp, amfphp and security, amfphp güvenlik, amfphp kullanmak, amfphp security, as3 güvenlik, host güvenlik, php security, security, swf güvenlik, swf security | 5 Yorum »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..
Benzer Yazılar;
- As3 ve Php: AmfPhp ye Giriş
- Php de Sql İnjection Açığı Nedir? Nasıl Korunulur?
- Php de Sessionlar Ne Kadar Güvenli?
- Php de Kendi Şifreleme Yöntemimizi Yapalım...

“Çok iyi bir sistemler”
o da güzel
TDK’ nın ajanları her yerde herhalde?
HTTP_REFERRER ‘a pek güvenmemek lazım..
firefox’un refControl plug-in’ini kullanarak fake referrer üretmek gayet mümkün..
https://addons.mozilla.org/en-US/firefox/addon/953
Paylaşım için teşekkürler.
Harun çok güzel bir konuya değindiği için kendisine bilare teşekkür ederiz.