18 Mayıs 2009 Pazartesi

Flash (Actionscript 2.0) ve Javascript kardeşliği (ExternalInterface)

Başımdan geçtikçe öğrendiklerimi ve uyguladıklarımı paylaşmaya devam ediyorum. Flashta hazırlanan bir formda e-mail validation yapmam gerekiyordu. flash içinden yapılabiliyordu ama farklılık olsunda javascript üzerinden yapayım dedim. :) Aslında farklılık olsun diye değil flash'ın komponentlerine güvenim sarsıldı (combobox componenti konusunda bayaa sorun yaşadım. Bunuda yakında yazacağım).

peki nasıl yapacağız bu işi?



efenim şöyleki

Öncelikle flash için ilgili frame içine şu kodları yazıyoruz.

import flash.external.ExternalInterface; // ilgili flash classını import ediyoruz...

var epostahata:String; //javascriptten dönen değeri atıyacağımız değişkeni tanımlıyoruz.

epostahata = String(ExternalInterface.call("epostaControl", eposta.text)); //ve epostaControl isimli javascript fonksiyonumuza eposta kutumuza girilen değişkeni gönderiyoruz.
if(epostahata == "false") //dönen sonuca göre işlemimizi yapıyoruz.
{
getURL("javascript:alert('Eposta Adresi hatalı');","_self");
}


Javascript kodumuz ise aşağıdaki gibi olacak;


şöyle basitten bir javascript email validation fonksiyonumuz mevcut ve bu arkadaş string olarak true veya false değerini döndürüyor.

function epostaControl(eposta)
{
regex = /^[a-zA-Z0-9`'._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
if (regex.test(eposta))
{
return "true";
}
else
{
return "false";
}
}

bu iki kod parçaçığı ile flash form üzerindeki veriyi javascripte gönderip javascriptte veriyi işleyip geri değer döndürebiliyoruz.

FLASH GÜVENLİĞE KATKI;
Bu özellği öğrendikten sonra flash uygulamalarımın güvenliğini bir nebze arttıracak ufak bir javascript fonksiyonu daha yazdım. Tabi sadece javascript değil, bu güvenlik yöntemini şöyle anlatayım.

Öncelikle flash uygulamalarının database ile bağlantılarını asp.net webservice ve flash'ın webservice sınıfını kullanarak gerçekleştiriyorum.

1. aşama :Birisi sayfamı ziyaret ettiğinde , oluşturduğum sayfanın page load ında bir security key oluşturuyorum ve bunu html içine yazıyorum.
2.aşama : Asp.net webservice e ulaşılmak istendiğinde parametre olarak bu security key'i istiyorum.
3.aşama; Flash üzerinden veri gönderilirken javascript yardımı ile bu security keyi html'den flash içine alıyorum ve webservice'e gönderiyorum.
4.Aşama : asp.net webservice üzerinde kullanılan security key'i databaseden kaldırıyorum.

Bu bana güvenlik açısından şunu sağlıyor. Database üzerine webservice üzerinden spam kayıt alınmasını engellemiş oluyorum.

Kimse database'ime istediği datayı post edemiyor. Databaseimde bir sabah uyandığımda 1 milyon kayıt görmemiş oluyorum.

Bu flash uygulamalarınızda kullanabileceğiniz basit bir korunma (güvenlik) yöntemi olabilir.

Şimdilik bu kadar.

Saygılarımla

1 yorum:

  1. Yalçın kardeşim süper bir anlatım birebir uyguladım kendi sistemime fakat sadece internet explorer de çalışmıyor. Bir önderin var mı ? Bu durum için !

    YanıtlaSil