Hesap Güvenliği (Password MD5 Şifreleme)

'Gerekli Bilgiler' forumunda E.m.R.a.H tarafından 6 Temmuz 2013 tarihinde açılan konu

  1. E.m.R.a.H

    E.m.R.a.H New Member

    [HIDE]

    Bu Sistemin Size Faydaları DB niz Çalınsa Bile Kullanıcılarınızın Şifresi Asla Gözükmez, Bu Yüzden Herhangi Bir Korkunuz Olmaz Onu Bırakın Serverınıza Girmiş Olsalar Bile Şifreler Karşılarına,



    Kod:
    0x01008A7CE696AF938542D5BF1BF130CAF820E8BA072F3AA0 AB49


    Şeklinde Çıkacaktır, Bu Şifreyi Alıp Yazsa Bile Geçersizdir, Kesinlikle Decrypti Herhangi Bir Yerde Yoktur. (MSSQL 2005'te Test Edilmiştir ve Şuanda Kendi Sunucumda Çalışmaktadır.)



    Kısacası Kendilerini Yırtsalarda Bu Şifrelerin Orjinal Hallerini Göremezler, İsterse DB deki Herşeyi Silsinler Veriler Bu Şekilde Kalır ve DECYPT(Çözümlenemez) Edilemez.



    %100 Güvenlidir.



    Başlıyoruz Kuruluma



    kn_online DB nizin Query Analizerine Giriyoruz.



    Hashı Oluşturan Fonksiyonumuz.



    Kod:
    CREATE FUNCTION CreateHash(@Data text)
    
    /*
    
    Author : AKUMA
    
    */
    
    RETURNS varbinary(255)
    
    BEGIN
    
     DECLARE @Hash varbinary (255)
    
     SET @Hash = pwdencrypt(@Data)
    
     RETURN @Hash
    
    END


    Hash Kontrolü Yapan Fonksiyonumuz...





    Kod:
    CREATE FUNCTION CheckHash(@Data text,@Hash varbinary(255))
    
    /*
    
    Author : AKUMA
    
    */
    
    RETURNS int
    
    BEGIN
    
     DECLARE @CheckStatus int
    
     SET @CheckStatus = pwdcompare(@Data,@Hash)
    
     RETURN @CheckStatus
    
    END
    
    
    Önce TB_USER Tablomuza Şifrelenmiş Şifreleri Binary Olarak Yazacağımız Bir Alan Ekliyoruz...





    Kod:
    ALTER TABLE TB_USER ADD strPasswdBackup varbinary(255) NOT NULL DEFAULT 0;
    
    


    Sonrasında Çalıştıracağımız Kod (İşlem Biraz Uzun Sürebilir User Sayısı Hızı Belirler.)

    Kod:
    DECLARE @strAccountID varchar(50),@strPasswd varchar(50),@strPasswdBackup varbinary(255)
    
    DECLARE TB_USER CURSOR FOR
    
    SELECT strAccountID,strPasswd,strPasswdBackup FROM TB_USER
    
    OPEN TB_USER
    
    FETCH NEXT FROM TB_USER INTO @strAccountID,@strPasswd,@strPasswdBackup
    
     WHILE (@@FETCH_STATUS = 0)
    
     BEGIN
    
     
    
     UPDATE TB_USER SET strPasswdBackup = dbo.CreateHash(@strPasswd) WHERE strAccountID = @strAccountID
    
     FETCH NEXT FROM TB_USER INTO @strAccountID,@strPasswd,@strPasswdBackup
    
     END
    
    CLOSE TB_USER
    
    DEALLOCATE TB_USER


    Yukarıdaki Kodu Uyguladığımızda Tüm Şifreler Binary Formatında strPasswdBackup a Yazılmış Olduğunu Göreceksiniz, Şimdi Geldik Bunu Normal strPasswd ye Çevirmeye TB_USER Tablomuzdaki strPasswd Alanını Siliyoruz.





    Kod:
    ALTER TABLE TB_USER DROP COLUMN strPasswd;
    
    


    Evet strPasswd yide Sildik, Şimdi strPasswdBackup ın Adını strPasswd ye Çevirelim.





    Kod:
    EXEC sp_rename 'TB_USER.strPasswdBackup', 'strPasswd', 'COLUMN'
    
    


    İşlemlerimiz Bitti Şimdi Geldik ACCOUNT_LOGIN de Bunu Nasıl Kontrol Edeceğimize ;

    ACCOUNT_LOGINI Açtığımız da Şöyle Bir Bölüm Göreceksiniz (Şifreyi Kontrol Eden Kısım) - (Unutmayınızki ACCOUNT_LOGIN den Hariç Bir LOGIN Prosedürünüz Var ise Onada Aynısını Uygulamanız Gerekir.)



    Varolan ACCOUNT_LOGIN



    Kod:
    DECLARE @pwd varchar(13)
    
     
    
    SET @pwd = null
    
     
    
    SELECT @pwd = strPasswd FROM TB_USER WHERE strAccountID = @AccountID
    
    IF @pwd IS null
    
    BEGIN
    
     SET @nRet = 0
    
     RETURN
    
    END
    
     
    
    ELSE IF @pwd <> @Password
    
    BEGIN
    
     SET @nRet = 0
    
     RETURN
    
    END


    Yeni Şifre Kontrol Kısmı (Değiştirilen Kısımlar Kırmızı Olarak Belirtilmiştir.)





    Kod:
    DECLARE @pwd varbinary(255)
    
     
    
    SET @pwd = null
    
     
    
    SELECT @pwd = strPasswd FROM TB_USER WHERE strAccountID = @AccountID
    
     
    
    IF @pwd IS null
    
    BEGIN
    
     SET @nRet = 0
    
     RETURN
    
    END
    
     
    
    ELSE IF dbo.CheckHash(@Password,@pwd) <> 1
    
    BEGIN
    
     SET @nRet = 0
    
     RETURN
    
    END


    Otomatik Üyelik te Kullanacığınız Örnek Kod(Unutmayınızki ACCOUNT_LOGIN den Hariç Bir LOGIN Prosedürünüz Var ise Onada Aynısını Uygulamanız Gerekir.) - (Değiştirilen Kısımlar Kırmızı Olarak Belirtilmiştir.)



    Kod:
    -- # Auto Account Start #
    
    SELECT @nRet = Count(strAccountId) FROM TB_USER WHERE strAccountId = @AccountID
    
    IF @nRet = 0
    
    BEGIN
    
    INSERT INTO TB_USER (straccountid, strpasswd, strSocNo, idays) values (@AccountID, dbo.CreateHash(@password), 1, '6')
    
    END
    
    -- # Auto Account End #


    Hash Şifre Değişimi İçin Procedure(Normal Şifre Gibi Değiştiremezsiniz.)





    Kod:
    CREATE PROCEDURE ACCOUNT_PASSWORD_CHANGE
    
    (
    
    @AccountID varchar(50),
    
    @Password varchar(50)
    
    )
    
    AS
    
    /*
    
    Author : AKUMA
    
    */
    
    BEGIN TRAN
    
    DECLARE @AccountStatus tinyint
    
    SELECT @AccountStatus = COUNT(strAccountID) FROM TB_USER WHERE strAccountID = @AccountID
    
    IF @AccountStatus = 0
    
    BEGIN
    
    PRINT RTRIM(LTRIM(@AccountID)) + ' Adında Bir Hesap Bulunamadı.'
    
    END
    
    ELSE
    
    BEGIN
    
    UPDATE TB_USER SET strPasswd = dbo.CreateHash(@Password) WHERE strAccountID = @AccountID
    
    PRINT RTRIM(LTRIM(@AccountID)) + ' Hesabının Şifresi Değişmiştir.'
    
    END
    
    COMMIT TRAN


    Şifre Değişim Proceduresinin Kullanımı





    Kod:
    Kullanım : EXEC ACCOUNT_PASSWORD_CHANGE 'HESAPID','ŞİFRE'
    
    Örnek : EXEC ACCOUNT_PASSWORD_CHANGE 'HESAPID','ŞİFRE'


    Uzman Kullanıcılar İçin Bilgilendirme ;



    Şifreleme ;



    Kod:
    Kullanım : SELECT dbo.CreateHash('ŞİFRE')
    
    Örnek : SELECT dbo.CreateHash('123456')


    Şifrenin Doğruluğunu Kontrol Etme ;





    Kod:
    Kullanım : SELECT dbo.CheckHash('Kontrol Edilecek Açık Şifre','Userın Hash Şifresi')
    
    Örnek : SELECT dbo.CheckHash('123456',0x01008A7CE696AF938542D5BF1BF130CAF820E8BA072F3AA0AB49)
    
    Bu Değer Sonunda 0 Dönerse Şifre Yanlış, 1 Dönerse Şifre Doğru Demektir.


    ANLATIM AKUMA[/HIDE]
     
  2. Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    saol kardeşim denicem
     
  3. LongTurk

    LongTurk Guest

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkürler.
     
  4. 0xhex

    0xhex New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    görelim :)
     
  5. soct

    soct New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşkkürler
     
  6. melanor

    melanor New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkürler
     
  7. kingsd

    kingsd New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkürler
     
  8. Pozitif

    Pozitif New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkürlerrrrr
     
  9. Orgeneral

    Orgeneral New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    +++++++++++++++++++++++++++
     
  10. nostalgia

    nostalgia New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkurler
     
  11. VolgaJames

    VolgaJames New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşekkürler
     
  12. speed159951

    speed159951 New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    sağol başkan
     
  13. VieMania

    VieMania New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    bakalımm
     
  14. hayalprest0

    hayalprest0 New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    İnşallah uyumludur db ye
     
  15. ArdreamPower

    ArdreamPower New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    eyw başkan
     
  16. Constant1ne

    Constant1ne New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    çok teşekkürler
     
  17. mykol349

    mykol349 New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    Teşekkürler 4 paylaşım
     
  18. Nitt0

    Nitt0 New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    tesekkurler
     
  19. Agamemnon

    Agamemnon New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    teşşekkürler
     
  20. ByFantastiq

    ByFantastiq New Member

    Cevap: Hesap Güvenliği (Password MD5 Şifreleme)



    paylaşım için teşekkürler
     

Bu Sayfayı Paylaş