- Katılım
- 21 May 2024
- Konular
- 1,450
- Mesajlar
- 2,451
- Çözüm
- 7
- Online süresi
- 3mo 25d
- Reaksiyon Skoru
- 2,564
- Altın Konu
- 1,027
- Başarım Puanı
- 274
- Yaş
- 51
- MmoLira
- 36,853
- DevLira
- 110
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Sunucularınızı SQL Injection, özellikle ; ile yapılan sorgu yığınlama saldırılarına karşı korumak için basit bir yöntem paylaşacağım.
Bu kod ne işe yarar? SQL Injection, birinin login ekranına DROP TABLE item_proto; gibi zararlı komutlar yazmasıdır. Bu kod, sorgudaki ilk '' ; ''
sonrasını keser ve şüpheli girişleri loglar,böylece art arda sorgu gönderilmesini engeller ve sunucunuzu daha güvenli hâle getirir.
Uyarı: Bu yöntem iyi korur, ama tam güvenlik için parametreli sorgular ve giriş kontrolü şarttır.
Korumayı Aktif Etme
service.h veya CommonDefines.h dosyanızın en üstüne aşağıdaki kodu ekleyin. Bu, korumayı aktif edip kapatmamızı sağlayacak anahtardır.
log.cpp Dosyasını Düzenleme
Bu dosyadaki LogManager::Query fonksiyonunu bulunuz
Değiştiriyoruz:
db.cpp dosyasını açıp şunu arıyoruz:
Değiştiriyoruz:
Yine db.cpp dosyasını açıp şunu arıyoruz:
Değiştiriyoruz:
Bu kod ne işe yarar? SQL Injection, birinin login ekranına DROP TABLE item_proto; gibi zararlı komutlar yazmasıdır. Bu kod, sorgudaki ilk '' ; ''
sonrasını keser ve şüpheli girişleri loglar,böylece art arda sorgu gönderilmesini engeller ve sunucunuzu daha güvenli hâle getirir.
Uyarı: Bu yöntem iyi korur, ama tam güvenlik için parametreli sorgular ve giriş kontrolü şarttır.
Korumayı Aktif Etme
service.h veya CommonDefines.h dosyanızın en üstüne aşağıdaki kodu ekleyin. Bu, korumayı aktif edip kapatmamızı sağlayacak anahtardır.
Kod:
#define ENABLE_SQL_INJECT_CONTROL_ON_QUERY // Sql Inject Protect
log.cpp Dosyasını Düzenleme
Bu dosyadaki LogManager::Query fonksiyonunu bulunuz
Kod:
void LogManager::Query(const char * c_pszFormat, ...)
Değiştiriyoruz:
Kod:
void LogManager::Query(const char * c_pszFormat, ...)
{
LOG_LEVEL_CHECK_N_RET(LOG_LEVEL_MIN);
char szQuery[4096];
va_list args;
va_start(args, c_pszFormat);
vsnprintf(szQuery, sizeof(szQuery), c_pszFormat, args);
va_end(args);
if (test_server)
sys_log(0, "LOG: %s", szQuery);
#ifdef ENABLE_SQL_INJECT_CONTROL_ON_QUERY
std::string sQuery(szQuery);
m_sql.AsyncQuery(sQuery.substr(0, sQuery.find_first_of(";") == std::string::npos ? sQuery.length(): sQuery.find_first_of(";")).c_str());
#else
m_sql.AsyncQuery(szQuery);
#endif
}
db.cpp dosyasını açıp şunu arıyoruz:
Kod:
void DBManager::Query(const char * c_pszFormat, ...)
Değiştiriyoruz:
Kod:
void DBManager::Query(const char* c_pszFormat, ...)
{
char szQuery[4096];
va_list args;
va_start(args, c_pszFormat);
vsnprintf(szQuery, sizeof(szQuery), c_pszFormat, args);
va_end(args);
#ifdef ENABLE_SQL_INJECT_CONTROL_ON_QUERY
std::string sQuery(szQuery);
m_sql.AsyncQuery(sQuery.substr(0, sQuery.find_first_of(";") == std::string::npos ? sQuery.length(): sQuery.find_first_of(";")).c_str());
#else
m_sql.AsyncQuery(szQuery);
#endif
}
Yine db.cpp dosyasını açıp şunu arıyoruz:
Kod:
SQLMsg* DBManager::DirectQuery(const char* c_pszFormat, ...)
Değiştiriyoruz:
Kod:
SQLMsg* DBManager::DirectQuery(const char* c_pszFormat, ...)
{
char szQuery[4096];
va_list args;
va_start(args, c_pszFormat);
vsnprintf(szQuery, sizeof(szQuery), c_pszFormat, args);
va_end(args);
#ifdef ENABLE_SQL_INJECT_CONTROL_ON_QUERY
std::string sQuery(szQuery);
return m_sql_direct.DirectQuery(sQuery.substr(0, sQuery.find_first_of(";") == -1 ? sQuery.length() : sQuery.find_first_of(";")).c_str());
#else
return m_sql_direct.DirectQuery(szQuery);
#endif
}
Son düzenleme:
En Çok Reaksiyon Alan Mesajlar
Paylaşımınız için teşekkür ederim güzel konu
Paylaşımınız için teşekkür ederim.
- Katılım
- 18 Eki 2024
- Konular
- 228
- Mesajlar
- 766
- Online süresi
- 1mo 16d
- Reaksiyon Skoru
- 961
- Altın Konu
- 12
- Başarım Puanı
- 163
- MmoLira
- 17,591
- DevLira
- 6
Paylaşımınız için teşekkür ederim güzel konu
- Katılım
- 12 Nis 2019
- Konular
- 172
- Mesajlar
- 990
- Çözüm
- 16
- Online süresi
- 1mo 24d
- Reaksiyon Skoru
- 1,035
- Altın Konu
- 18
- Başarım Puanı
- 226
- Yaş
- 30
- MmoLira
- 10,349
- DevLira
- 18
Paylaşımınız için teşekkür ederim.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 33
- Görüntüleme
- 2K
- Cevaplar
- 37
- Görüntüleme
- 2K
- Cevaplar
- 3
- Görüntüleme
- 781