DoS Güvenlik Açığı Düzeltmesi ( HEADER_CG_CHARACTER_SELECT )
HEADER_CG_CHARACTER_SELECT'i geçersiz bir karakter kimliği ile spamlayarak db'nin aşırı yüklenmesine ve çökmesine neden olan DoS saldırısı olmuştur;
db syslog'unda birçok [PLAYER_LOAD] Load from PlayerDB pid[0] girdisi bulacaksınız. Bunu düzeltmek için:
goto input_login.cpp
yukarıya ekleyin.
C++:
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
C++:
if (player_load_packet.player_id == 0)
{
sys_err("invalid player_id from account %d\n",c_r.id);
d->DelayedDisconnect(0);
return;
}
C++:
if (player_load_packet.player_id == 0)
{
sys_err("invalid player_id from account %d\n",c_r.id);
d->DelayedDisconnect(0);
return;
}
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
Bu düzeltme, geçersiz bir karakter seçildiğinde oyuncunun bağlantısının kesilmesini sağlayarak spam yapmayı zorlaştıracak ve oran sınırlarını tekrar etkili hale getirecektir.
Thank You; LTGT
