Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Veritabanından Gelen ID'yi Anlamsız Karaktere Çevirmek ?

Konu, 'ASP' kısmında By Akuma tarafından paylaşıldı.

  1. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Merhaba Ben Veritabanından Gelen Bir ID'yi Çok Anlamsız Bir Değere Dönüştürmek istiyorum. Örneğin:
    Veritabanından Gelen ID
    Kod:
    deneme.asp?ID=1
    Adres Çubuğuna Gelen Değer ise
    Kod:
    deneme.asp?ID=0589d6d85d5ss8s65
    Bu Tarzda Nasıl Yapabilirim Bi Nevi Facebook'un Çapa Sistemi Gibi ama Js ile değilde Asp ile
     
  2. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Veritabanı Ne :)
     
  3. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    MySQL Pardon Dostum Herşeyi Yazmışım bi Onu Yazmamışım :D
     
  4. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Akşama eve geçince bunun ile ilgili bir şeyler yazacağım. Ama genel iş şifreleme ve geri çözme (encrypt / decrypt) üzerine.
     
  5. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Çok Güzel Farkı Bi Uygulama Olabilir bu :)
     
  6. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    Aşağıdaki uygulamayı deneyerek sayıları basit anlamda şifreleme ve çözmeyi kavrayabilirsin.
    strKey değişkeni şifrelerken ve çözerken kullanılacağından halihazırdaki gibi karmaşık bir şeyler olabilir. Bu değer değiştikçe çok keskin olmasa da dönecek değerler de değişmeye başlar o yüzden bu değişken biraz özel olmalı. Fonksiyonlar sayısal olmayan değerler üzerinde işlem yapmayacaklar. Bu yüzden sadece ID için kullanılabilir. Bir dene bakalım.
    PHP:
    <%
    Const 
    strKey "0652^'34as>d57%%66()" '' // Türkçe Karakter Yok! En Az 2 Karakter

    Function str_sifrele(ByVal strG)
        If 
    Not IsNumeric(strGThen str_sifrele strG : Exit Function
        For 
    1 to Len(strG)
            
    sGH  Mid(strGi1)
            
    intInd = (Len(strKey)+1 Mod i)-1
            sKeyH  
    Mid(strKeyintInd1)
            
    sGH  Chr(Asc(sGH) + Asc(sKeyH))
            
    sSon sSon Hex(Asc(sGH))
        
    Next
        str_sifrele 
    sSon
    End 
    Function

    Function 
    str_coz(ByVal strG)
        
    str_coz strG
        On Error Resume Next
        
    For 1 To Len(strGStep 2
            sTemp 
    sTemp Chr("&H" Mid(strGi2))
        
    Next
        
    If Err Then Exit Function
        
    On Error GoTo 0
        
    For 1 to Len(sTemp)
            
    sGH  Mid(sTempi1)
            
    intInd = (Len(strKey) + 1 Mod i) - 1
            sKeyH  
    Mid(strKeyintInd1)
            
    sGH  Chr(Asc(sGH) - Asc(sKeyH))
            
    sSon sSon sGH
        Next    
        str_coz 
    sSon
    End 
    Function

    SIFRELENECEK 129 ''ID
    SIFRELI 
    str_sifrele(SIFRELENECEK)
    Response.Write "Şifreli ("SIFRELENECEK &") : "SIFRELI &"<br /><br />"
    COZULEN str_coz(SIFRELI)
    Response.Write "Çözülmüş ("SIFRELI &") : "COZULEN &"<br /><br />"

    %>
     
  7. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Aslında Çok Güzel Bir Örnek Oldu Ama yapmak istediğim Tam Olarak Bu Değildi.
    Mesela Örneğin Deneme Adında Bir Tablomuz Var;
    Hücrelerimiz; ID , Name , Content

    Veritabanına Kayıt Ekliyoruz.
    1 , By Akuma , Deneme İçerik

    1 Olan ID'nin Adres Çubuğunda Çözümlenen Şekli ?ID=5536b5s5sv95x Gibi Olabilirmi ?

    Bide Senin Hazırladığın Örnekte Mesela ID 5 Se 2 Karakterli bi Değer Üretiyor Daha Fazla Yapamazmıyız bunu ?
     
  8. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    :D E fonksiyon orada işte.
    deneme.asp?id=<%=rs("id")%> yerine deneme.asp?id=<%=str_sifrele(rs("id"))%> link vereceksin.
    deneme.asp'de Request.QueryString("id") yerine str_coz(Request.QueryString("id")) kullanacaksın.
    Veya tablolarında id2 diye birer alan açıp o alana id alanını str_sifrele fonksiyonu ile sifrelenmiş halini kaydedeceksin.
     
  9. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Yok O Şekilde Çok Güzel Uyumlu Oldu Zaten :D Ben Biyerde Hata Yapmışım Düzelttim Onu Şimdi daha iyi oldu Yalnız Tek Birşey Kaldı Mesela Örnekte 1 ID si 2 Karakterli Çözümleniyor 2 Karakter Değilde 6 yada 8 karakter olarak başlıyamazmı ?
     
  10. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    O zaman geri döndürülebilir olması zorlaşıyor. Madem MySQL kullanıyorsun MySQL'in md5 fonksiyonunu kullanman daha iyi olacak gibi.
     
  11. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Evet Bende Denedim ama Baya Bi Uğraşmak Gerekli Peki Bi Örnek Varmı Elinizde MySQL Md5'le ilgili zira Pekte Md5le yapmak istemiyorum.
     
  12. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    1'in md5 hashi = c4ca4238a0b923820dcc509a6f75849b'dir. Bu durumda sorgu şöyle oluyor;
    Kod:
    Select * From tablo Where md5(id) = [I]'c4ca4238a0b923820dcc509a6f75849b'[/I]
    Kırmızı olan kısmın ASP'den gönderildiğini düşünün. Ama bu kayıtlar arttıkça performans sorunu yaratacaktır.
    Onca yazdık ettik de bu şekilde bir kullanımın amacı nedir?
     
  13. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Amaç Güvenlik Bi Nevi Kötü Kullanıcıların Yada Diğer bir Tabirle Lamer Olan Haykırlara Önlem :) Ama Md5'le Yapmıyacağım bi Kesin Oldu skacurt önceki şifrere ve çözümle fonksyonuyla bişeyler yapmam gerekli, çünkü Md5'le seninde dediğin gibi ilerde performans sorunu olucak, Zira Benim Düşündüğüm Kullanıcı Sayısı Yani ID Sayısı 10.000 ve 50.000 Civarı ki Böle Bir Rakamda Md5'le Yaparsam Mahvolduk bittik Biz :D
     
  14. preludem

    preludem Aktif Üye

    Kayıt:
    14 Ocak 2008
    Mesajlar:
    263
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğretmen
    Şehir:
    Kocaeli/Gebze
    id değişkeni request.querystring olarak değilde request.form şeklinde gönderirsen adres çubuğunda id değişkeni görünmez. Bahsettiğin güvenlik sorunu da çözümlenmiş olur. Ayrıca bu tür güvenlik sorunlarını çeşitli replace tarzı güvenlik fonksiyonları ile de çözebilirsiniz.
     
  15. By Akuma

    By Akuma Aktif Üye

    Kayıt:
    7 Ekim 2009
    Mesajlar:
    372
    Beğenilen Mesajlar:
    1
    Meslek:
    interface & Front End Developer
    Buradaki Amaç Yanıltmak, Örneğin; Veritabanında DenemeTablo: id, namesurname / Yapılan Kayıt; id:5,namesurname:ahmet / requestle şifrelenen ve gelen değer; sayfa.asp?ID=5x4c67n02

    Buradaki Tek Problem Fonksyonun Tek Karakterli gelen değeri 2 karaktere çevirmesi yani 5 yada 6 karaktere çevirdiğinde iş bitiyor :D
     
  16. suffa

    suffa Üye

    Kayıt:
    4 Nisan 2010
    Mesajlar:
    177
    Beğenilen Mesajlar:
    0
    Meslek:
    Yazılım - Sistem Yöneticisi
    Şehir:
    Kahramanmaraş
    skacurt ben veritabanıolarak msssql'e geçtim bu md5 veritabanına şifreleri kaydeterken kullanabilirmiyim ?
     
  17. skacurt

    skacurt Â

    Kayıt:
    4 Ocak 2008
    Mesajlar:
    4,340
    Beğenilen Mesajlar:
    21
    Meslek:
    Küfeci
    Şehir:
    İstanbul
    O fonksiyon MySQL'de var, SQL Server'daki yerleşik hash üretme fonksiyonlarına doğrudan erişmek daha zahmetli.