ASP Dosyalarınızı DLL’e çevirin

Sniper tarafından 10 Mart 2009 tarihinde yazıldı.

Çoğumuz yazdığımız ASP kodlarını yetkisiz kişilerden saklamak isteriz. Özellikle bir sistem üzerinde oldukça yoğun bir çalışma yaptıktan sonra ortaya çıkardığımız eserin kodlarının başkaları tarafından kullanılmasını engellemek için çeşitli güvenlik önlemleri almak isteriz. Bu yazıda güvenlik önlemlerine ek olarak elimden geldiğince ASP dosyalarımızı DLL olarak kaydetmeyi ve kodlarımızı gizlemeyi anlatmaya çalışacağım.

Kodlarımızı DLL haline getirmek için elimizde iki şeyin olması kâfi. Birincisi bir metin editörü (notepad bile yeter) ikincisi ise Visual Basic 6.0. Malzemelerimiz hazırsa tarifimize geçelim. Öncelikle basit bir ASP sayfası oluşturalım. Benim örneğim altta, siz kafanıza göre birşeyler karalayabilirsiniz.

< %
Response.Write "<html><head><title>ASP kodlarını DLL üzerinden çalıştırma denemesi</title>"
Response.Write "</head><body><font color=""#FF0000"" size=2 face=""trebuchet ms"">"
Response.Write "Bu sayfa bir DLL dosyasından türetilmiştir.</font></body>"
%>

Bu sayfamıza herhangi bir isim vererek şimdilik bir kenara kaydedelim. Bu haliyle kullanmayacağız ama yine de baştan hazırlayalım dedim. Şimdi Visual Basic programımızı DLL oluşturacak şekilde açalım. Bunun için izlememiz gereken yol şöyle:

  1. Visual Basic programını açıp File menüsünden New’i tıklayın.
  2. Açılan pencereden ActiveX DLL seçeneğini işaretleyip OK’a tıklayın.
  3. Projemize ASP nesnelerini eklemek için Project menüsünden References seçeneğine tıklayın.
  4. Açılan pencereden Microsoft Active Server Pages Object Library’i bulup işaretleyin ve OK’a tıklayın.

Projemize bu şekilde ASP desteğini eklemiş olduk. Şimdi sıra geldi kodlarımızı kişiselleştirmeye. Bu aşamada istersek kodları kendi dilimize bile çevirebiliriz. (Ben biraz denedim ama sanırım pek uymadı)

'Buradaki Türkçe isimler tamamen sizin inisiyatifinize kalmış.
Private Baglam As ScriptingContext
Private Uygulama As Application
Private Istek As Request
Private Cevap As Response
Private Sunucu As Server
Private Oturum As Session
 
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
    Set Baglam = PassedScriptingContext
    Set Uygulama = Baglam.Application
    Set Istek = Baglam.Request
    Set Cevap = Baglam.Response
    Set Sunucu = Baglam.Server
    Set Oturum = Baglam.Session
End Sub
 
Public Sub OnEndPage()
    Set Baglam = Nothing
    Set Uygulama = Nothing
    Set Istek = Nothing
    Set Cevap = Nothing
    Set Sunucu = Nothing
    Set Oturum = Nothing
End Sub

Kodlarımızı yazdıktan sonra projemize ve sınıfımıza birer isim verelim. Bu kısım önemlidir çünkü örnek sayfamızı çalıştırdığımızda oluşturduğumuz bu DLL dosyasını kullanabilmek için nesne oluştururken bu isimler kullanılır (ProjeAdı.SınıfAdı). Bu yazımda ben proje adımı “ASPden“, sınıf adımı ise “DLLye” olarak belirledim. Bunların ne olacağı tamamen size kalmış. Önce projemize bir isim verelim ve tekrar Project menüsüne dönelim ve Project1 Properties menüsüne tıklayalım. (Eğer buraya gelmeden önce projenizin ismini değiştirdiyseniz sorun yok ama buna rağmen tekrar değiştirmek isterseniz bu menü “ProjenizinAdı Properties” olarak görünür.)

Açılan pencereden Project Name kutucuğuna istediğimiz ismi yazıyoruz (Ben ASPden demiştim.) ve Tamam‘a tıklıyoruz. Projemizin artık bir adı var. Şimdi sıra sınıfımızı adlandırmaya geldi. Bunun için çalışma sayfamıza geri dönüyoruz ve sağ tarafta Properties – Class1 başlıklı pencereyi buluyoruz. (Eğer buraya gelmeden de sınıfınızın ismini değiştirdiyseniz ve yine de değiştirmek isterseniz bu pencerenin başlığı Properties – Sınıfınızın Adı olarak görünecektir.) Eğer bu pencereyi göremiyorsanız View menüsünden Properties Window seçeneğini tıklayın veya direkt olarak F4 tuşuna basın. Bu pencerede görüntülenen özelliklerden Name yazanın karşısına tıklayıp istediğimiz ismi yazalım. (Ben DLLye yazmıştım.) DLL dosyamız kısmen bitti ama işin en civcivli kısmına geldik: DLL dosyamıza kendi ASP kodlarımızı ekleyeceğiz.

Bunun için yazının başında hazırladığımız ASP dosyamızı açalım. Bir iki ufak değişiklikten sonra bu kodları az önce oluşturduğumuz kodlarla birleştirerek işlemimizi tamamlayacağız. Yukarıdaki kodlarda ASP’nin Response nesnesinin adını ben Cevap olarak değiştirmiştim. Bu nedenle ilk oluşturduğumuz ASP dosyamızdaki Response yazan yerleri Cevap olarak değiştireceğiz ve Deneme isimli bir fonksiyona ekleyeceğiz:

Public Sub Deneme()
    Cevap.Write "<html><head><title>ASP kodlarını DLL üzerinden çalıştırma denemesi</title>"
    Cevap.Write "</head><body><font color=""#FF0000"" size=2 face=""trebuchet ms"">"
    Cevap.Write "Bu sayfa bir DLL dosyasından türetilmiştir.</font></body></html>"
End Sub

Son olarak kafalar karışmadan tüm kodları birleştirerek pişirmek için fırına verelim:

'Buradaki Türkçe isimler tamamen sizin inisiyatifinize kalmış.
Private Baglam As ScriptingContext
Private Uygulama As Application
Private Istek As Request
Private Cevap As Response
Private Sunucu As Server
Private Oturum As Session
 
Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
    Set Baglam = PassedScriptingContext
    Set Uygulama = Baglam.Application
    Set Istek = Baglam.Request
    Set Cevap = Baglam.Response
    Set Sunucu = Baglam.Server
    Set Oturum = Baglam.Session
End Sub
 
Public Sub OnEndPage()
    Set Baglam = Nothing
    Set Uygulama = Nothing
    Set Istek = Nothing
    Set Cevap = Nothing
    Set Sunucu = Nothing
    Set Oturum = Nothing
End Sub
 
Public Sub Deneme()
    Cevap.Write "<html><head><title>ASP kodlarını DLL üzerinden çalıştırma denemesi</title>"
    Cevap.Write "</head><body><font color=""#FF0000"" size=2 face=""trebuchet ms"">"
    Cevap.Write "Bu sayfa bir DLL dosyasından türetilmiştir.</font></body></html>"
End Sub

Kodlama kısmı bittiğine göre artık DLL dosyamızı oluşturabiliriz. Bunun için File menüsünden Make ASPden.dll menüsünü tıklıyoruz. (Eğer projemizi farklı isimlendirdiysek bu menü Make Proje Adı.dll olarak görünecektir.) Ben kolaylık olsun diye projemi direkt olarak C: dizininin altında oluşturdum. Kaydedilen DLL dosyasının isminin hiçbir önemi olmadığı için istediğiniz ismi vererek projenizi derleyebilirsiniz (Yine ben Sniper adıyla derledim). DLL dosyamızı oluşturduğumuza göre bunu sistemimize tanıtmanın zamanı geldi. Başlat menüsünden Çalıştır‘ı seçiyoruz ve açılan pencereye regsvr32 C:\Sniper.dll yazıp Enter tuşuna basıyoruz. Eğer karşımıza “DllRegisterServer / C:\Sniper.dll başarıyla gerçekleştirildi.” mesajı gelmediyse bir yerlerde hata yapmış olasılığımız üzerine yazıyı en baştan tekrar okuyoruz. (İnşallah yazım hatası yapmamışımdır da sürekli aynı yeri okumak zorunda kalmazsınız)

Tüm işlemlerimizi tamamladık. Artık derlediğimiz dosyamızı deneyelim değil mi? Eğer yukarıdaki kodları aynen kullandıysanız aşağıdakini de aynen kopyalayıp C:\inetpub\wwwroot klasörüne “asp2dll.asp” ismiyle kaydedin ve sonucu görmek için browser’ınızın adres kısmına http://localhost/asp2dll.asp yazın:

< %
Set Ornek = Server.CreateObject("ASPden.DLLye")
Ornek.Deneme()
%>

Eğer aşağıdaki görüntüyü aldıysanız kendinizi kutlayın.

sonuc

7 kişi bunu beğendi.

Etiketler: , ,

“ASP Dosyalarınızı DLL’e çevirin” yazısına 3 yorum yapılmış

  1. Oğuz Ateş

    hocam merhabalar öncelikle bu güzel örnek için elinize sağlık, benim bu konu üzerinde bi sorum olacakdı,yardımcı olabilirseni sevinirim.
    hocam benim connection die bi dosyam var ve bu dosya 2 tane asp sayfası içeriyor bu asp saylarının 2 side mssqlserverdaki database tablolarıma baglantı kurmak için,
    ben bi dll yazıp sizin yukarıdaki oluşturdunuz gibi bu dll i çagırarak baglanmak istiyorum ki şifre ve parolam görünmesin,
    asp sayfamdaki kodun 1 tanesi;

    bunu dll e koyup dll i çagırığ bağlantıyı böyle sağlamak istiyorum , ms visual studio da denemlerde bulundum ama bu oluşturduğum dll de , dllRegisterServer giriş noktası bulunamadı – die sisteme tanıtırken hata aldım. yardımlarınız için şimdiden cok teşekkrü ederim

  2. Oğuz Ateş

    dll e code um da ;
    Public Class Class1

    Private Baglan
    Private Application
    Private Request
    Private Response
    Private Server
    Private Session

    Public Sub OnStartPage(ByVal PassedScriptingContext)
    Baglan = PassedScriptingContext
    Application = Baglan.Application
    Request = Baglan.Request
    Response = Baglan.Response
    Server = Baglan.Server
    Session = Baglan.Session
    End Sub

    Public Sub OnEndPage()
    Baglan = Nothing
    Application = Nothing
    Request = Nothing
    Response = Nothing
    Server = Nothing
    Session = Nothing
    End Sub

    Public Sub conn()
    Dim MM_Personel_STRING
    MM_Personel_STRING = “driver={SQL Server};server=ATES;uid=s;pwd=p;database=CommonSource”
    End Sub
    End Class

  3. DLL oluştururken kullandığınız Visual Studio’nun hangi versiyon olduğunu bilmiyorum ama benim kullandığım versiyon 6 idi. Bunun dışında hiçbir editörle DLL oluşturmayı denemedim açıkçası. Sorunuza net bir cevap veremediğim için üzgünüm.

Yorum Ekle