Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Uyeols10
Bu Foruma yaptığınız ilk ziyaretiniz ise, Lütfen öncelikle Yardım kriterlerini okuyunuz.Forumumuzda bilgi alışverişinde bulunabilmeniz için öncelikle Kayıt olmalısınız.
Üye olmayanlar Forumumuzdan hiçbir şekilde aktivite uygulayamaz, Mesaj yazamaz, Konu açamaz, Eklenti indiremez. Forumumuzu tam anlamıylakullanmak için Üye olabilirsiniz..


Join the forum, it's quick and easy

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Uyeols10
Bu Foruma yaptığınız ilk ziyaretiniz ise, Lütfen öncelikle Yardım kriterlerini okuyunuz.Forumumuzda bilgi alışverişinde bulunabilmeniz için öncelikle Kayıt olmalısınız.
Üye olmayanlar Forumumuzdan hiçbir şekilde aktivite uygulayamaz, Mesaj yazamaz, Konu açamaz, Eklenti indiremez. Forumumuzu tam anlamıylakullanmak için Üye olabilirsiniz..
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan)

Aşağa gitmek

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Empty Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan)

Mesaj tarafından ReD Çarş. Mart 03, 2010 9:07 am

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

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:

-- 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_'

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

Kod:

CREATE PROCEDURE [dbo].[ACCOUNT_LOGIN]
@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

Kolay Gelsin...!
ReD
ReD
Forum Kurucusu
Forum Kurucusu

Mesaj Sayısı : 3038
Kayıt tarihi : 23/01/10
Leader Poınt : 11635
Nerden : Nereye =)

https://pvpserver.1talk.net

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

Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan) Empty Geri: Türkçe ID ve Şifre Engelleme %100 (Kendi Veritabanımdan)

Mesaj tarafından Misafir Paz Mayıs 09, 2010 12:21 pm

:D Bilmeyen varmı aga :D
Anonymous
Misafir
Misafir


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

Sayfa başına dön

- Similar topics

 
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz