AnasayfaSSSAramaÜye ListesiKayıt OlGiriş yap

Paylaş | 
 

 Türkçe ID ve Şifre Engelleme %100 Çalışıyor

Aşağa gitmek 
YazarMesaj
FuRKann
9.Seviye Üye
9.Seviye Üye
avatar

<b>Mesaj Sayısı</b> Mesaj Sayısı : 349
Kent Puanı Kent Puanı : 31568227
Rep puanı Rep puanı : 90
Rep Gücü Rep Gücü :
Kayıt tarihi Kayıt tarihi : 09/09/10





MesajKonu: Türkçe ID ve Şifre Engelleme %100 Çalışıyor   Cuma Eyl. 10, 2010 11:15 am

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 [Üye Olmadan
linkleri Göremezsiniz 10 Sn içinde üye olmak için. TIKLAYINIZ...]

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

Fonksiyonumuz ;


Kod:

CREATE FUNCTION [dbo].[IsValidCharacters](@SData
varchar(8000))





Kod:

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 ;


-- 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 =
'qwertyuopasdfghjklizxcvbnmQWE
RTYUIOPASDFGHJKLZXCV BNM1234567890_'
Kodun Uygulanması ;
ACCOUNT_LOGIN,ACCOUNT_LOGIS,MA IN_LOGIN
veya MYST_LOGIN Ana Logininiz Hangisi ise...


Kod:


CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]




Kod:


@AccountID varchar(21),
@Password varchar(13),
@nRet
smallint OUTPUT

AS

-- Tam Buraya
AS'ın Hemen
Altına Şunu Yazıyorsunuz... (Alttan Tire Kullanılabilir Hali.)


Kod:

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

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
Altına Değil Alttaki Kodu Yapıştırın ve
Kaydedin Bu Kadar.


Kod:

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




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

Procedürü Silemiyenler Bu Şekilde Silebilir.





Kod:

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




Sayfa başına dön Aşağa gitmek
http://www.facebook.com/OmerFurkanTASCI
 
Türkçe ID ve Şifre Engelleme %100 Çalışıyor
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
 :: knight Onlıne ::   :: Knight Online Görevler & Rehberler-
Buraya geçin: