SQL Nedir ?
# SQL (Structured Query Language) veritabanından bilgi çekme silme vb. gibi işlemler yapabilen bir dildir. Bulunduğumuz zamanda çoğu web sitelerinin alt yapılarında bu veritabanı vardır.
# SQL en yaygın olan güvenlik açığıdır ve çok tehlikelidir.
# SQL hazır scriptler (vbulletin,vb.) gibi yüksek güvenlik testlerinden geçirilmez.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
Nasıl Kapatılır ?
servar da magic_quotes aktif değilse şayet tırnak problemleri yaşamanız veya sql injectiona maruz kalmanız olası,
sunucu size ait ise php.ini de magic_quotes = değerinin on olmasına dikkat edin, bunun haricinde sayfalarınızın kodlaması utf-8 ve addslashes() fonskiyonundan geçirmeniz durumunda sql injectiona maruz kalmazsınız,
sql injection $_GET ve $_POST ile html den alınan verinin mysql motoruna gönderilirken karakterlerin yanlış algılanması sonucu meydana gelir
addslashes() html den gelen operatör karakterleri ” veya ‘ başına \ koyarak sorgunun es geçmesini sağlar, eğer magic_quotes kapalı ise addslashes işlev görmez. bu nedenle her ne kadar fonksiyondan geçirirseniz geçirin sql injection yinede gerçekleşir. bunun akabinde yine sayfa kodlamanız utf-8 değilse ascii karakter
olarak addslashes bypass edilebilir, sql injection yazılım operatörlerinin karakter setine göre alınıp işlenmesinden ibarettir, eğer siz bu veriyi işlerken bu karakterin query ye ait olmadığını anlatamazsanız query niz bozulur ve injection gerçekleşir. Burada asıl mesele ” ve ‘ süzülmesi olayıdır. query lerinizde where sutun=’$degisken’ şeklinde tırnak içersine almanız query nizin bozulmasını engeller,
aynı şekilde
where sutun=$degisken şeklinde kullanmanız query nizin bozulmasına neden olur, çünkü verinin baslangıc ve bitiş karakterleri yoktur.
Şöyle basit bir örnek verelim.
gelen verimizin Ahmet”in Ceketi olduğunu varsayalım
Veriyi değişken yerine koyduğunuzda
Şeklinde query de en baştaki ” ve en sondaki ” query aralığını belirtir, veride bir tane daha ” koyarsanız query orda biter yani where sutun=Ahmet” — devamı yok sayılır.
Ardından injection gerçekleşir. bunu şöyle yapsak
$degisken = addslashes($_GET['veri']);
burada verimizin çıktısı,
Ahmet\”in Ceketi şeklinde olacaktır. addslashes veriden gelen ” karakterinin query e ait olmadığını ibare edecek yani karakteri es geçmesini (görmezden gelmesini) sağlayacak \ karakterini ekler,
şayet where sutun=’$degisken’ şeklinde kullanırsanız, query i dahada kısıtlamış olursunuz, mysql başlangıc berlireçleri yanı sıra, where sutun kısmında da bir kısıtlayıcı eklemiş olursunuz.
Alıntı
Metin2 Sunucularında SQL Açıklarını Kapatma Yolları
Giriş
Metin2 sunucuları, büyük bir oyuncu kitlesine sahip olan popüler bir MMORPG oyunudur. Bu nedenle sunucuların güvenliği kritik derecedir. Özellikle Metin2 veritabanları (MySQL, MariaDB), doğru yapılandırılmadığında SQL Injection gibi güvenlik açıklarına maruz kalabilir. Bu yazıda, Metin2 veritabanlarında olası SQL açıklarını nasıl kapatabileceğimizi detaylıca ele alacağız.
SQL Injection Nedir?
SQL Injection, kötü niyetli kişilerin SQL sorguları aracılığıyla veritabanına erişim sağlamasına izin veren bir güvenlik zaafiyetidir. Metin2 veritabanlarında bu tür açıklar, oyuncu bilgilerinin çalınmasına, eşya kaybına veya sunucunun tamamen ele geçirilmesine neden olabilir. Bu sebeple, Metin2 geliştiricileri için bu açıkları kapatmak hayati öneme sahiptir.
SQL Açıklarını Kapatma Yöntemleri
1. Girdi Doğrulama ve Filtreleme:
Oyuncudan gelen tüm verileri doğrulamak ve filtrelemek en temel güvenlik yöntemlerindendir. Örneğin, bir oyuncunun gönderdiği karakter adı, e-posta adresi veya eşya ID'si gibi veriler, özel karakterlerden arındırılmalıdır. Bu sayede kullanıcılar tarafından SQL komutları yerleştirmesi engellenir.
2. Prepared Statements Kullanımı:
Prepared statements (hazırlanmış ifadeler), SQL injection saldırılarına karşı güçlü bir koruma sağlar. PHP gibi dillerde PDO veya MySQLi kullanarak sorguları parametrelerle hazırlamak, kullanıcı girdilerinin doğrudan SQL komutuna dönüştürülmesini engeller.
3. Yetkilendirme ve Erişim Kontrolü:
Veritabanı kullanıcılarının sadece gerekli izinlere sahip olması gerekir. Örneğin, bir Metin2 sunucusunun veritabanı kullanıcısının sadece oynatma, güncelleme ve silme işlemlerine izinli olması gerekir. Root kullanıcı ile bağlanmak gibi yüksek yetkili bağlantılar risk oluşturur.
4. Veritabanı Günlüğü ve İzleme Sistemleri:
Veritabanı sorgularının loglanması ve anormal davranışların izlenmesi, potansiyel saldırıları erken fark etmeyi sağlar. Martysama veya diğer Metin2 geliştirme platformlarında kullanılan bazı sistemlerde bu tür loglama işlemleri zaten entegre halde bulunur.
5. Metin2 DB Core ve Tablo Yapılarını Güncelleştirme:
Metin2 sunucularında kullanılan 'db_core', 'player_table', 'item_table', 'mob_table', 'guild_table' gibi yapılar düzenli olarak güncellenmeli ve güvenlik yamaları uygulanmalıdır. Bu sayede bilinen açıklar kapatılır.
Yanlış Uygulamalar ve Sonuçları
SQL güvenlik açıklarının kapatılmaması durumunda sunucu yöneticileri birçok sorunla karşılaşabilir. Oyuncu hesaplarının ele geçirilmesi, eşyaların çalınması, veri tabanının silinmesi gibi olaylar yaşanabilir. Bu da hem maddi hem de itibari zararlara yol açar.
Teknik Öneriler
Metin2 geliştiricileri, veritabanı bağlantı dosyalarını dışarıdan erişime kapalı tutmalıdırlar. Ayrıca, .htaccess gibi yapılarla veritabanı dosyalarına doğrudan erişimi engellemek önemlidir. Stored procedure, trigger gibi yapılar da güvenliği artırmak için akıllıca kullanılabilir.
Sunucu Tarafında Güvenlik
Sunucu tarafında çalışan scriptlerin (örneğin game 서버) kullanıcı girdilerini kontrol etmesi, SQL injection saldırılarını minimuma indirger. Metin2 geliştirme ortamlarında bu kontroller genellikle C++ ile yapılır.
Sonuç
Metin2 sunucularında SQL açıklarını kapatmak, sadece teknik bir zorunluluk değil aynı zamanda oyuncuların güvenliğini sağlamak adına hayati bir adımdır. Doğru yapılandırma, güncellemeler ve dikkatli kodlama ile Metin2 veritabanları güvenli hale getirilebilir. Güvenlik ihlallerinden kaçınmak için düzenli denetimler yapmakta fayda vardır.
Ways to Close SQL Vulnerabilities in Metin2 Servers
Introduction
Metin2 servers are home to a large player base as a popular MMORPG game. Therefore, server security is critical. Especially Metin2 databases (MySQL, MariaDB) can be prone to SQL injection vulnerabilities if not properly configured. In this article, we will discuss in detail how to close potential SQL vulnerabilities in Metin2 databases.
What is SQL Injection?
SQL injection is a security vulnerability that allows malicious individuals to gain access to a database by inserting SQL commands. Such vulnerabilities in Metin2 databases can lead to player data theft, item losses, or even full server compromise. For this reason, closing these vulnerabilities is crucial for Metin2 developers.
Methods to Close SQL Vulnerabilities
1. Input Validation and Filtering:
Validating and filtering all input received from players is one of the most basic security measures. For example, character names, email addresses, or item IDs sent by players should be sanitized from special characters to prevent users from inserting SQL commands.
2. Use of Prepared Statements:
Prepared statements provide strong protection against SQL injection attacks. By using PDO or MySQLi in languages like PHP, queries can be prepared with parameters, preventing user inputs from being directly converted into SQL commands.
3. Authorization and Access Control:
Database users should only have necessary permissions. For instance, a Metin2 server’s database user should only have permissions for reading, updating, and deleting. Connecting with high-privileged accounts such as root can pose risks.
4. Database Logging and Monitoring Systems:
Logging database queries and monitoring unusual behaviors can help detect potential attacks early. Some systems used in platforms like Martysama already have integrated logging features.
5. Updating Metin2 DB Core and Table Structures:
Structures such as 'db_core', 'player_table', 'item_table', 'mob_table', and 'guild_table' used in Metin2 servers must be regularly updated and patched to close known vulnerabilities.
Consequences of Poor Practices
Failure to address SQL vulnerabilities may result in numerous issues for server administrators, including account theft, item losses, or even deletion of the entire database. This leads to both financial and reputational damage.
Technical Recommendations
Metin2 developers should keep database connection files inaccessible from outside. Additionally, using mechanisms like .htaccess to block direct access to database files is important. Stored procedures and triggers can also be used intelligently to enhance security.
Server-Side Security
Ensuring that server-side scripts (e.g., game server) validate user inputs can minimize SQL injection attacks. These checks are typically implemented in C++ within Metin2 development environments.
Conclusion
Closing SQL vulnerabilities in Metin2 servers is not just a technical requirement but also a vital step in ensuring player safety. Proper configuration, updates, and careful coding can secure Metin2 databases. Regular audits are recommended to avoid security breaches.
# SQL (Structured Query Language) veritabanından bilgi çekme silme vb. gibi işlemler yapabilen bir dildir. Bulunduğumuz zamanda çoğu web sitelerinin alt yapılarında bu veritabanı vardır.
# SQL en yaygın olan güvenlik açığıdır ve çok tehlikelidir.
# SQL hazır scriptler (vbulletin,vb.) gibi yüksek güvenlik testlerinden geçirilmez.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
Nasıl Kapatılır ?
servar da magic_quotes aktif değilse şayet tırnak problemleri yaşamanız veya sql injectiona maruz kalmanız olası,
sunucu size ait ise php.ini de magic_quotes = değerinin on olmasına dikkat edin, bunun haricinde sayfalarınızın kodlaması utf-8 ve addslashes() fonskiyonundan geçirmeniz durumunda sql injectiona maruz kalmazsınız,
sql injection $_GET ve $_POST ile html den alınan verinin mysql motoruna gönderilirken karakterlerin yanlış algılanması sonucu meydana gelir
addslashes() html den gelen operatör karakterleri ” veya ‘ başına \ koyarak sorgunun es geçmesini sağlar, eğer magic_quotes kapalı ise addslashes işlev görmez. bu nedenle her ne kadar fonksiyondan geçirirseniz geçirin sql injection yinede gerçekleşir. bunun akabinde yine sayfa kodlamanız utf-8 değilse ascii karakter
olarak addslashes bypass edilebilir, sql injection yazılım operatörlerinin karakter setine göre alınıp işlenmesinden ibarettir, eğer siz bu veriyi işlerken bu karakterin query ye ait olmadığını anlatamazsanız query niz bozulur ve injection gerçekleşir. Burada asıl mesele ” ve ‘ süzülmesi olayıdır. query lerinizde where sutun=’$degisken’ şeklinde tırnak içersine almanız query nizin bozulmasını engeller,
aynı şekilde
where sutun=$degisken şeklinde kullanmanız query nizin bozulmasına neden olur, çünkü verinin baslangıc ve bitiş karakterleri yoktur.
Şöyle basit bir örnek verelim.
gelen verimizin Ahmet”in Ceketi olduğunu varsayalım
Kod:
1 2 3 $degisken = $_GET['veri']; "select * from tablo where sutun=$degisken"
Veriyi değişken yerine koyduğunuzda
Kod:
1 "select * from tablo where sutun=Ahmet"in Ceketi"
Şeklinde query de en baştaki ” ve en sondaki ” query aralığını belirtir, veride bir tane daha ” koyarsanız query orda biter yani where sutun=Ahmet” — devamı yok sayılır.
Ardından injection gerçekleşir. bunu şöyle yapsak
$degisken = addslashes($_GET['veri']);
burada verimizin çıktısı,
Ahmet\”in Ceketi şeklinde olacaktır. addslashes veriden gelen ” karakterinin query e ait olmadığını ibare edecek yani karakteri es geçmesini (görmezden gelmesini) sağlayacak \ karakterini ekler,
şayet where sutun=’$degisken’ şeklinde kullanırsanız, query i dahada kısıtlamış olursunuz, mysql başlangıc berlireçleri yanı sıra, where sutun kısmında da bir kısıtlayıcı eklemiş olursunuz.
Alıntı
Metin2 Sunucularında SQL Açıklarını Kapatma Yolları
Giriş
Metin2 sunucuları, büyük bir oyuncu kitlesine sahip olan popüler bir MMORPG oyunudur. Bu nedenle sunucuların güvenliği kritik derecedir. Özellikle Metin2 veritabanları (MySQL, MariaDB), doğru yapılandırılmadığında SQL Injection gibi güvenlik açıklarına maruz kalabilir. Bu yazıda, Metin2 veritabanlarında olası SQL açıklarını nasıl kapatabileceğimizi detaylıca ele alacağız.
SQL Injection Nedir?
SQL Injection, kötü niyetli kişilerin SQL sorguları aracılığıyla veritabanına erişim sağlamasına izin veren bir güvenlik zaafiyetidir. Metin2 veritabanlarında bu tür açıklar, oyuncu bilgilerinin çalınmasına, eşya kaybına veya sunucunun tamamen ele geçirilmesine neden olabilir. Bu sebeple, Metin2 geliştiricileri için bu açıkları kapatmak hayati öneme sahiptir.
SQL Açıklarını Kapatma Yöntemleri
1. Girdi Doğrulama ve Filtreleme:
Oyuncudan gelen tüm verileri doğrulamak ve filtrelemek en temel güvenlik yöntemlerindendir. Örneğin, bir oyuncunun gönderdiği karakter adı, e-posta adresi veya eşya ID'si gibi veriler, özel karakterlerden arındırılmalıdır. Bu sayede kullanıcılar tarafından SQL komutları yerleştirmesi engellenir.
2. Prepared Statements Kullanımı:
Prepared statements (hazırlanmış ifadeler), SQL injection saldırılarına karşı güçlü bir koruma sağlar. PHP gibi dillerde PDO veya MySQLi kullanarak sorguları parametrelerle hazırlamak, kullanıcı girdilerinin doğrudan SQL komutuna dönüştürülmesini engeller.
3. Yetkilendirme ve Erişim Kontrolü:
Veritabanı kullanıcılarının sadece gerekli izinlere sahip olması gerekir. Örneğin, bir Metin2 sunucusunun veritabanı kullanıcısının sadece oynatma, güncelleme ve silme işlemlerine izinli olması gerekir. Root kullanıcı ile bağlanmak gibi yüksek yetkili bağlantılar risk oluşturur.
4. Veritabanı Günlüğü ve İzleme Sistemleri:
Veritabanı sorgularının loglanması ve anormal davranışların izlenmesi, potansiyel saldırıları erken fark etmeyi sağlar. Martysama veya diğer Metin2 geliştirme platformlarında kullanılan bazı sistemlerde bu tür loglama işlemleri zaten entegre halde bulunur.
5. Metin2 DB Core ve Tablo Yapılarını Güncelleştirme:
Metin2 sunucularında kullanılan 'db_core', 'player_table', 'item_table', 'mob_table', 'guild_table' gibi yapılar düzenli olarak güncellenmeli ve güvenlik yamaları uygulanmalıdır. Bu sayede bilinen açıklar kapatılır.
Yanlış Uygulamalar ve Sonuçları
SQL güvenlik açıklarının kapatılmaması durumunda sunucu yöneticileri birçok sorunla karşılaşabilir. Oyuncu hesaplarının ele geçirilmesi, eşyaların çalınması, veri tabanının silinmesi gibi olaylar yaşanabilir. Bu da hem maddi hem de itibari zararlara yol açar.
Teknik Öneriler
Metin2 geliştiricileri, veritabanı bağlantı dosyalarını dışarıdan erişime kapalı tutmalıdırlar. Ayrıca, .htaccess gibi yapılarla veritabanı dosyalarına doğrudan erişimi engellemek önemlidir. Stored procedure, trigger gibi yapılar da güvenliği artırmak için akıllıca kullanılabilir.
Sunucu Tarafında Güvenlik
Sunucu tarafında çalışan scriptlerin (örneğin game 서버) kullanıcı girdilerini kontrol etmesi, SQL injection saldırılarını minimuma indirger. Metin2 geliştirme ortamlarında bu kontroller genellikle C++ ile yapılır.
Sonuç
Metin2 sunucularında SQL açıklarını kapatmak, sadece teknik bir zorunluluk değil aynı zamanda oyuncuların güvenliğini sağlamak adına hayati bir adımdır. Doğru yapılandırma, güncellemeler ve dikkatli kodlama ile Metin2 veritabanları güvenli hale getirilebilir. Güvenlik ihlallerinden kaçınmak için düzenli denetimler yapmakta fayda vardır.
Ways to Close SQL Vulnerabilities in Metin2 Servers
Introduction
Metin2 servers are home to a large player base as a popular MMORPG game. Therefore, server security is critical. Especially Metin2 databases (MySQL, MariaDB) can be prone to SQL injection vulnerabilities if not properly configured. In this article, we will discuss in detail how to close potential SQL vulnerabilities in Metin2 databases.
What is SQL Injection?
SQL injection is a security vulnerability that allows malicious individuals to gain access to a database by inserting SQL commands. Such vulnerabilities in Metin2 databases can lead to player data theft, item losses, or even full server compromise. For this reason, closing these vulnerabilities is crucial for Metin2 developers.
Methods to Close SQL Vulnerabilities
1. Input Validation and Filtering:
Validating and filtering all input received from players is one of the most basic security measures. For example, character names, email addresses, or item IDs sent by players should be sanitized from special characters to prevent users from inserting SQL commands.
2. Use of Prepared Statements:
Prepared statements provide strong protection against SQL injection attacks. By using PDO or MySQLi in languages like PHP, queries can be prepared with parameters, preventing user inputs from being directly converted into SQL commands.
3. Authorization and Access Control:
Database users should only have necessary permissions. For instance, a Metin2 server’s database user should only have permissions for reading, updating, and deleting. Connecting with high-privileged accounts such as root can pose risks.
4. Database Logging and Monitoring Systems:
Logging database queries and monitoring unusual behaviors can help detect potential attacks early. Some systems used in platforms like Martysama already have integrated logging features.
5. Updating Metin2 DB Core and Table Structures:
Structures such as 'db_core', 'player_table', 'item_table', 'mob_table', and 'guild_table' used in Metin2 servers must be regularly updated and patched to close known vulnerabilities.
Consequences of Poor Practices
Failure to address SQL vulnerabilities may result in numerous issues for server administrators, including account theft, item losses, or even deletion of the entire database. This leads to both financial and reputational damage.
Technical Recommendations
Metin2 developers should keep database connection files inaccessible from outside. Additionally, using mechanisms like .htaccess to block direct access to database files is important. Stored procedures and triggers can also be used intelligently to enhance security.
Server-Side Security
Ensuring that server-side scripts (e.g., game server) validate user inputs can minimize SQL injection attacks. These checks are typically implemented in C++ within Metin2 development environments.
Conclusion
Closing SQL vulnerabilities in Metin2 servers is not just a technical requirement but also a vital step in ensuring player safety. Proper configuration, updates, and careful coding can secure Metin2 databases. Regular audits are recommended to avoid security breaches.
