| Bu örnekte ise Örnek1’ e ek  olarak daha güvenli bir kod yazılacaktır. Örnek 1’e dikkat edilirse, sayfanın  kaynağı görüntülendiğinde cihaza gönderilen tüm parametreler kullanıcı  tarafında görüntülenebilmektedir. Bu ciddi bir güvenlik sıkıntısıdır. Çünkü  cihaza gönderilen parametreler özel veri ya da anlam içerebilir. Bu nedenle  cihaza gönderilecek parametreler harici bir kaynaktan çekilmelidir. Ayrıca bu harici kaynağa  kullanıcılar tarafından erişim yapılmamalıdır. Aşağıda bu işlemin nasıl  yapılacağına dair bir örnek uygulama gösterilecektir.  Parametreleri gizlemek için  farklı yöntemlerde kullanabilirsiniz.  Not : Burada parametreler her ne kadar son kullanıcıdan gizlense de profesyonel kullanıcılar tarafından görüntülenebilir. Daha güvenli bir sistem için kullanıcı sayfası ile kontrol sayfaları arasında gidip-gelen veriler şifrelenmeli ya da farklı bir yöntem ile kullanıcının erişimine kapatılmalıdır.  Bu örnekte 3 adet sayfamız  olacak. demo.asp – kullanıcının gireceği  sayfa response.asp – parametrelerin  çekileceği sayfa OkeyIdentity.js – fonksiyonların  bulunduğu sayfa. İlk önce demo.asp adında boş bir  sayfa oluşturuyoruz. Örnek1 de yaptığımız gibi yine aynı işlemleri yapacağız.  Bu örnekte sadece daha fazla buton olacak ve daha fazla fonksiyona erişeceğiz. İlk önce nesnemizi tanımlayalım. 
        
          | 
            
           <HTML>
                  
               <HEAD>
                
             <TITLE>O-Key Identity Demo</TITLE>
                  
             </HEAD>
                
             
               
               <BODY>
                
             
               
             <OBJECT ID=OkeyIdentity
                    
                     classid="clsid:D06B2328-27AB-4F45-B02D-6ACEFEDD486E"
                
                     codebase="http://localhost/OkeyIdentityActivex.cab#version=1,0,9,0"
                
                     width=220
                    
                     height=102
                    
                     align=center
                    
                     hspace=0
                    
                     vspace=0
                    
             >
               
             </OBJECT>
                
             
               
               </BODY>
                
             </HTML>
              
             
               
             |  response.asp dosyasında ,  güvenlik amacıyla kullanıcıya verilen session kontrol edilecektir. O yüzden  demo.asp sayfamız yüklendiğinde bir session yaratalım. 
        
          | 
             
           <%
                    
               session("SID")=session.SessionID
                
             %>
              
             
               
             |  Fonksiyonlarımızı web sayfasına  yazmak yerine bir javascript dosyasına yazarak ordan erişim sağlayacağız.  Kaynak dosyamızın adı OkeyIdentity.js olsun. demo.asp sayfamızdan  fonksiyonlara erişirken kaynak dosyasını aşağıdaki gibi tanımlayarak  erişeceğiz.  Fonksiyonlarımız, aldığı  cevapları input nesnesine yazacaktır. 
        
          | 
             
           <script language="javascript" src=OkeyIdentity.js></script>
                
               <script>
              
             function Web_OD_Login()
                  
             {
                  
             document.form1.StringInput.value += JS_OD_Login()+"\n";
                  
             }
                  
             
               
             function Web_OD_Logout()
                  
             {
                  
             
               
             document.form1.StringInput.value += JS_OD_Logout()+"\n";
                  
             
               
             }
                  
             ...
                  
             ...
              
             </script>
              
             
               
             |    Şimdi asıl fonksiyonlarımızı  tanımlayacağımız OkeyIdentity.js dosyasını oluşturalım. OkeyIdentity.js dosyasında Cihaz  erişim fonksiyonlarımız haricinde ek fonksiyonlar da bulunacaktır. Bu ek  fonksiyonlar ajax alt yapısını kullanarak, response.asp dosyasından istediğimiz  parametreyi çekmemizi sağlayacaktır. Böylece kullanıcılar sayfanın kaynağını  görüntülediklerinde herhangi bir parametre göremeyeceklerdir. OkeyIdentity.js 
        
          | var request;
                  
           var response
                    
               var dongle_session;
                  
             var encrypted_data;
                  
             
              
             function InitializeRequest()
                  
             {
                  
                 request = false;
                  
                   if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    
                    request = new XMLHttpRequest();
                  
                     if (request.overrideMimeType) {
                  
                           request.overrideMimeType('text/html');
                  
                     }
                  
                 } else if (window.ActiveXObject) { // IE
                    
                     try {
                  
                           request = new ActiveXObject("Msxml2.XMLHTTP");
                  
                     } catch (e) {
                  
                           try {
                  
                           request = new ActiveXObject("Microsoft.XMLHTTP");
                  
                           } catch (e) {}
                  
                     }
                  
                 }
                  
                 if (!request) {
                  
                     alert('Cannot create XMLHTTP instance');
                  
                     return false;
                  
                 }
                  
             }
                  
             
              
             function GetParameter(parameter)
                  
             {
                  
                 InitializeRequest();
                  
                 var param = "rndParam="+Math.random+"&sourceurl="+window.location.href;
                  
                 param = param + "&dongle_parameter="+parameter;
                  
                 request.onreadystatechange = ProcessRequestList;
                  
                 request.open("POST","response.asp",false);
                  
                 request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                  
                 request.send(param);
                  
                 return response;
                  
             }
                  
             
              
             function ProcessRequestList()
                  
             {
                  
                   if(request.readyState == 4)
                  
                   {
                  
                         if(request.status == 200)
                  
                         {
                  
                             if(request.responseText
              != "")
              
                               {
                  
                                     response
              = request.responseText;
                  
                               }
                  
                         }
                  
                   }
                  
             }
                  
               |  Burada tanımlanan GetParameter  fonksiyonu, aldığı parametreyi response.asp sayfasına göndererek, bu sayfadan  aldığı cevabı geri döndürmektedir. Cihaza erişim esnasında  kullanacağımız parametreleri kullanıcılardan gizlemek için GetParameter  fonksiyonunu kullanarak, response.asp  sayfasından çekeceğiz. Aşağıda buna bir örnek  verilmiştir. 
        
          | 
            
           function JS_OD_Login()
                    
               {
                  
                   module_id=GetParameter('module_id');
                  
                   device_parameter=GetParameter('device_parameter');
                  
                   dongle_session=OkeyIdentity.OD_Login(module_id,device_parameter);
                  
                   return dongle_session;
                  
             }
              
             |  Bu fonksiyon cihaza giriş  esnasında kullanacağı module_id ve device_parameter değişkenlerini response.asp  den çekmektedir.  Diğer tüm fonksiyonlarda buna  benzer şekilde tanımlanmıştır.  Parametreyi geri döndüren  response.asp dosyası ise, kendisine gelen talepleri değerlendirerek istenen  parametreyi geri döndürmektedir. Ayrıca session kontrolü ve gelen  sayfa kontrolü yaparak, response.asp nin kullanıcı tarafından görüntülenmesini  engellemektedir. response.asp 
        
          | 
             
           <%
                  
               
              
               
               if
              Request.Form("sourceurl")<>"http://localhost/demo.asp"
              then
              
             response.End
                  
             end if
                  
             
              
               
               if session("SID")<> session.sessionID then
                
             response.end
                  
             end if
                  
             
              
               
               dim parameter
                  
             parameter=Request.Form("dongle_parameter")
                
             
              
               
               Select Case parameter
                  
                   Case
              "module_id"
              
                         Response.Write
              "0"
              
                   Case
              "device_parameter"
              
                         Response.Write
              ("A021B6AF90ECBD48534AA14024E903FE")
              
                   Case
              "string_data"
              
                         Response.Write
              "SampleStringData"
              
                   Case Else
                  
                         Response.Write("hatalı
              parametre")
              
             End Select
                  
             %>
              
             |  Burada en baştaki kontrolde,  gelen taleplerin gerçekten doğru sayfa tarafından gönderilip gönderilmediğine  bakılmaktadır. Bizim anasayfamız IIS üzerinde demo.asp olduğu için  tanımlaması  “http://localhost/demo.asp"  olarak yapışmıştır. Siz buraya gerçek sitenizin adresini yazmalısınız. Daha sonra ise demo.asp de  yaratılan sessionID nin geçerli olup olmadığına bakılmaktadır. Son kısımda ise OkeyIdentity.js  tarafından talep edilen parametreler bulunmaktadır. Kendisine gönderilen  parametreye bakarak, geriye cevap döndürmektedir. Dilerseniz buraya istediğiniz  kadar parametre ekleyebilirsiniz.  Böylece parametreler kullanıcıdan  gizlenmiştir.  Bu örneğin tamamına O-Key  Identity SDK klasöründeki örnek uygulamalardan erişebilir ve  inceleyebilirsiniz. |