SüKûT-Forum
SüKûT-Forum
Yükleniyor

Türkçe ID ve Şifre Engelleme %100

Önceki başlık Sonraki başlık Aşağa gitmek

Türkçe ID ve Şifre Engelleme %100 Empty Türkçe ID ve Şifre Engelleme %100

#1 Ptsi 17 Mayıs - 15:59

Selamlar,

Kendi Veritabanımda Kullandığım Regex(Regular
Expression) Sizinle Paylaşayım Dedim, Baktım Bir Dünya Konu Var..

2 Aşama Göreceksiniz fakat Sadece 1. Aşama da İşinizi Görür, 2. Aşama
Sadece Ek Güvenlik Tercihe Bağlı...

Gel Gelelim 1. Aşamayı
Uygulayınca Ne Olacak ?

Şöyle Diyeyim "a-Z
/ 0-9 / _"
Karakterleri Sadece ID ve Şifrede Kullanabilir, Kesinlikle Hiç Bir ASCII
Karakter ile Oyuna Giremez Tamamiyle %100'dür.


Kullanılabilecek Küçük Harfler : abcdefghijklmnoprstuvyzxwq
Kullanılabilecek Büyük Harfler : ABCDEFGHIJKLMNOPRSTUVYZXWQ
Kullanılabilecek Sayılar : 0123456789

Kullanılabilecek Karakterler : _ (Alttan Tire,
Aşağıda İsterseniz Onuda Kaldırabilirsiniz)

Kısacası Mevcutta
Kullandığınız RULES v.s. ne Var ise Silin Gitsin, Son Nokta Konulmuştur Türkçe ID ve Şifre Engelleme %100 Smile

1.
AŞAMA (Türkçe Karakterin ve Tüm Karakterlerin Tarih Olması) ;


Fonksiyonumuz ;

Kod:
CREATE FUNCTION [dbo].[IsValidCharacters](@SData varchar(8000)) RETURNS INT  AS /* Author : AKUMA Update : 16.10.2009 - 15:30 */ BEGIN DECLARE @SDataLen int DECLARE @Loop int DECLARE @Letter varchar(1) DECLARE @RXLetters varchar(8000) DECLARE @Match tinyint SET @RXLetters = 'qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_' SET @SDataLen = LEN(@SData) SET @Loop = 1 SET @Match = 0 WHILE @Loop < (@SDataLen + 1) BEGIN SET @Letter = RTRIM(LTRIM(SUBSTRING(@SData,@Loop,1))) IF CHARINDEX(@Letter,@RXLetters) = 0 BEGIN SET @Match = 1 BREAK END SET @Loop = @Loop + 1 END RETURN @Match END

Önemli Bilgiler ;
Kod:
[b]
[/b][b][b] -- Aşağıda '.....' Arasına Koyduğunuz Her Karakter Geçerli Karakter Sayılır Örneğin Æ yi Koyarsanız Geçerli Olur, Koymazsanız Geçersiz Olur. SET @RXLetters = 'qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_'[/b][/b]

Kodun Uygulanması ;
ACCOUNT_LOGIN,ACCOUNT_LOGIS,MAIN_LOGIN veya MYST_LOGIN
Ana Logininiz Hangisi ise...

Kod:
[b][b]CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN] @AccountID   varchar(21), @Password   varchar(13), @nRet      smallint   OUTPUT AS -- Tam Buraya[/b][/b]

AS'ın Hemen Altına Şunu Yazıyorsunuz... (Alttan Tire Kullanılabilir Hali.)
Kod:

[b][b]IF dbo.IsValidCharacters(@AccountID) = 1 BEGIN SET @nRet = 2 -- Hesap Bulunamadı. RETURN END IF dbo.IsValidCharacters(@Password) = 1 BEGIN SET @nRet = 3 -- Şifreniz Hatalıdır. RETURN END[/b][/b]

2. AŞAMA (EK Güvenlik) : Aynı Anda İki Hesabın
Oyuna Girmesine Engeller, Örneğin \"aktas\" Diye
Bir Hesabım Var Benim Biride \"aktaş\" Açtı fakat Birşekilde Paketleri
Editledi ve \"aktas\" Yapıp Karaktere Girmesini
Engellemektedir.


PROC_INSERT_CURRENTUSER'nüzü
Açın ve SET @nRet = 1 Yazan Yerin Hemen Üstüne Dikkat Edin Üstüne

Kod:
[b][b]DECLARE @RAccountID char(21) /* Author : AKUMA Update : 26.07.2009 - 22:45 */ SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID1 = @CharID and strCharID1 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID2 = @CharID and strCharID2 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID3 = @CharID and strCharID3 IS NOT NULL IF @RAccountID IS NULL BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID = '' BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID <> @AccountID BEGIN SET @nRet = 0 RETURN  END[/b][/b]

Yapamıyanlar İçin Komple
PROC_INSERT_CURRENTUSER (Ekisini Silin Bunu Koyun Yerine - Query Any.)


Procedürü Silemiyenler Bu Şekilde Silebilir.

Kod:

[b][b]DELETE PROC PROC_INSERT_CURRENTUSER Kod: CREATE PROCEDURE PROC_INSERT_CURRENTUSER @AccountID    char(21),  @CharID      char(21), @ServerNo    int, @ServerIP        char(15), @ClientIP      char(15), @nRet smallint output  AS /* Author : AKUMA Update : 26.07.2009 - 22:12 */ INSERT INTO CURRENTUSER (nServerNo, strAccountID, strCharID, strServerIP, strClientIP)  VALUES  (@ServerNo, @AccountID, @CharID,@ServerIP,@ClientIP) DECLARE @RAccountID char(21) SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID1 = @CharID and strCharID1 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID2 = @CharID and strCharID2 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID3 = @CharID and strCharID3 IS NOT NULL IF @RAccountID IS NULL BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID = '' BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID <> @AccountID BEGIN SET @nRet = 0 RETURN    END ELSE BEGIN SET @nRet = 1 RETURN END[/b][/b]

Kolay Gelsin...!
ReDMaD
ReDMaD
Sanatkâr
Sanatkâr

Mesaj Sayısı : 1706
Yaş : 33
Kayıt tarihi : 02/12/09
Nerden : Almanya
Rep Gücü : 3827
Rep Puanı : 13
Uyarı : Seviye 1

http://ebrupolatfan.eniyiforum.org

Sayfa başına dön Aşağa gitmek

Türkçe ID ve Şifre Engelleme %100 Empty Geri: Türkçe ID ve Şifre Engelleme %100

#2 C.tesi 3 Tem. - 23:19

teşekkürler işe yarar ..=)
aRMaGeDDon
aRMaGeDDon
Vatandaş
Vatandaş

Mesaj Sayısı : 85
Yaş : 27
Kayıt tarihi : 30/03/10
Nerden : İstanbuL
Rep Gücü : 172
Rep Puanı : 2
Uyarı : Seviye 1

Sayfa başına dön Aşağa gitmek

Önceki başlık Sonraki başlık Sayfa başına dön

- Similar topics

Konuyu Paylaş...
Konu Linkleri
URL:
BBCode:
HTML:
 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz