Pvp Serverler | Metin2 | Pvp Server | Private Serverler | Metin2 Pvp Serverler | Knight

Pvp Serverler | Metin2 | Pvp Server | Private Serverler | Metin2 Pvp Serverler | Knight

Pvp Serverler | Metin2 | Private Serverler | Pvp Serverlar | Metin2 Private Serverlar | Knight Online Private Serverlar | Pvp Hileler | Pvp Server Tanıtımlar | Pvp Koxp | Private Serverlar Düpe Yöntemleri | PVP SERVERLER,PVP SERVER,PVP,FİFA 2011,PES 2011


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

    Paylaş
    avatar
    Admin
    Admin
    Admin

    <b>Mesaj Sayısı</b> Mesaj Sayısı : 1103
    <b>Rep Puanı</b> Rep Puanı : 414804 Rep Gücü : 0 Kayıt tarihi : 16/09/10 Pvp Server Kurulumu :


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

    Mesaj tarafından Admin Bir Cuma 7 Ocak - 6:59

    Selamlar,

    Umarım En Yararlı Paylaşım Olur,

    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,

    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 Razz

    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.

    Cucelator Harici Paylaşımı Kesinlikle Yasaktır.

    Kolay Gelsin







    Admin

    [Linkleri görebilmek için üye olun veya giriş yapın.]

    [Linkleri görebilmek için üye olun veya giriş yapın.]

      Forum Saati Paz 20 Mayıs - 4:28