Metin2 Gelişmiş İtem İlan Script 2026

  • Konuyu açan Konuyu açan Oguzcatli
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 12
  • Gösterim Gösterim 411

Oguzcatli

Üye
Üye
Mesaj
15
Beğeni
9
Puan
40
Ticaret Puanı
0
  • Session Hardening: HTTPOnly, Secure ve SameSite çerezleri ile oturum çalınması imkansız hale getirilmiştir.
  • CSRF Protection: Token tabanlı koruma sayesinde tüm formlar sahte isteklere karşı güvendedir.
  • IDOR Protection: URL'lerdeki ID'ler AES-128-CBC ile şifrelenir, başkasının verisine erişim engellenir.
  • Browser Fingerprinting: Kullanıcının tarayıcısı değiştiğinde veya başka bir oturum açtığında sistem bunu algılar ve oturumu kapatır.
  • SQL Injection: %100 Prepared Statements yapısı ile veritabanı saldırılarına karşı tam koruma.
  • XSS Protection: Sadece HTML değil, JS ve URL alanları için de özel htmlspecialchars() escaping yapısı.
  • Anti-Flood: Seri istekleri engelleyen Rate Limiting (2 saniye kuralı).
  • Session Fixation: Oturum güvenliği için her 5 dakikada bir Session ID otomatik değişir.
  • Advanced Headers: X-Frame-Options,

    CSP gibi güvenlik başlıkları ile Clickjacking ve XSS engellenir.
  • Content Security Policy (CSP): eval() fonksiyonu engelli, dış kaynaklar beyaz liste (whitelist) ile sınırlandırılmıştır.
  • Input Sanitization: Gelen tüm veriler strip_tags, trim ve filtrelerden geçirilir.
  • CAPTCHA: Otomatik bot girişlerini engellemek için güvenlik doğrulaması mevcuttur.

SQL Taraflı Kilitleme (Transaction & Locking) Nedir?

Sizin sisteminizde "Double Spending" (Çift Harcama) veya "Item Duplication" (Eşya Kopyalama) olmaması için Row-Level Locking (Satır Bazlı Kilitleme) kullanıyoruz.

İşte sistemin nasıl çalıştığının teknik mantığı:

1.​

Kodlarımızda şu satırı sıkça görüyorsunuz:

php


$db->prepare("SELECT * FROM web_auctions WHERE id=? FOR UPDATE");
Bu komut veritabanına şunu söyler: "Bu satırı okuyorum ama işlemim bitene kadar KİMSE bu satıra dokunamasın, okuyamasın ve güncelleyemesin."

Örnek Senaryo (Korumasız Olsa Ne Olurdu?):

  1. Ahmet sayfayı yeniledi, ihale bitti mi diye sordu. (Sistem: Evet bitti, parayı ver)
  2. Mehmet (veya Ahmet'in yan sekmesi) milisaniyeler sonra aynı soruyu sordu. (Sistem: Evet bitti, parayı ver)
  3. Eğer kilit olmasaydı, satıcıya iki kere para giderdi.
Korumalı Hali (Bizim Yaptığımız):

  1. Transaction Başlar(
    beginTransaction
    ).
  2. Sistem satırı kilitler (
    FOR UPDATE
    ).
  3. Diğer tüm istekler bu işlem bitene kadar beklemeye alınır (Queue).
  4. Para verilir, durum güncellenir.
  5. Transaction Biter(
    commit
    ).
  6. Sıradaki istek işleme girer, bakar ki durum artık "active" değil "waiting_claim". İşlemi iptal eder.

2. Güvenlik Katmanları​

  • Atomicity (Bütünlük):
    beginTransaction
    ve
    rollback
    sayesinde, işlemin yarısı gerçekleşip yarısı gerçekleşmeme durumu olmaz. Ya parayı alır ve eşyayı verir, ya da hiçbir şey yapmaz. Elektrik kesilse bile veri bozulmaz.
  • Prepared Statements: SQL Injection'ı %100 engeller. Kullanıcı
    DROP TABLE
    gibi kodlar gönderse bile veritabanı bunu sadece düz yazı olarak algılar.
  • Isolation: Her işlem birbirinden izole çalışır. Bir kullanıcının bakiyesi güncellenirken diğer kullanıcı o anki bakiyeyi yanlış göremez.
Bu yapı bankacılık sistemlerinde kullanılan yapının aynısıdır (ACID standartları).

2.​

  • Otomatik İşleme: Kullanıcılar açık arttırma sayfasında olmasa bile, siteye giren herhangi bir ziyaretçi sayesinde süresi dolan açık arttırma anında sonuçlanır.
  • Anlık Ödeme: İhale bittiği saniye, satıcının parası hesabına yatar ve kazanan alıcıya bildirim gider.
  • Canlı Teklif: Kullanıcılar saniyeler içinde teklif verip rekabete katılabilir.

3.​

  • Akıllı Arama: Eşya adı, efsun ismine göre detaylı arama.
  • Vitrin Sistemi: Oyuncular belirli bir ücret karşılığında ilanlarını öne çıkarabilir (Highlighted Listings).
  • Detaylı Eşya Görüntüleme: Eşyaların taşları, efsunları ve + basma dereceleri oyun içindeki gibi birebir gösterilir.
  • Otomatik Resim Eşleştirme: Veritabanında resmi olmayan eşyalar (örn. +3 +4 taşlar) için akıllı algoritma en uygun resmi otomatik bulur.

4.​

  • Detaylı Geçmiş: Alım, Satım ve Hizmet (Vitrin ücretleri vb.) işlemleri ayrı sekmelerde, net bir şekilde listelenir.
  • Türkçe Karakter Desteği: Sistem genelinde özel kodlanmış karakter düzeltme motoru ile "İ", "Ş", "Ğ" gibi harfler asla bozulmaz.
  • Kolay İlan Yönetimi: Tek tıkla ilanı yayından kaldırma, fiyat güncelleme veya satılan eşyayı teslim alma.

5.​

  • Satıcıya Mesaj: Beğenilen bir eşya için direkt panel üzerinden satıcıya teklif mesajı atılabilir.
  • Güvenli Mesajlaşma: Mesaj URL'leri bile şifrelenerek, kullanıcı gizliliği %100 korunur.
  • Hesap İsimleri: İlk 3 harf gerisi sansürlü gösterilecek şekilde ayarlanmıştır.
Oyuncularınızın kazandığı EP'leri nakite çevirmesine olanak tanıyan güvenli altyapı.

  • Anlık Kur Hesaplama: Admin panelinden belirlenen kur üzerinden (Örn: 100 EP = 1 TL) otomatik hesaplama.
  • Güvenli Talep: Bakiye, talep oluşturulduğu anda hesaptan düşülür (Double Spending Önlemi).
  • IBAN Doğrulama: Kullanıcılar sadece kendi adlarına ait IBAN ile çekim yapabilir.
  • İşlem Geçmişi: Kullanıcılar taleplerinin durumunu (Bekliyor, Onaylandı, Red) anlık takip edebilir.

6. ADMİN PANEL​

Sistemi tam kontrol altına almanızı sağlayan, detaylı yönetim merkezi.

  • Dashboard (Genel Bakış): Günlük ciro, aktif ilanlar, bekleyen ödemeler ve son işlemleri tek ekranda görün.
  • İhale Yönetimi: Sorunlu ihaleleri tek tıkla iptal edip eşyayı sahibine iade etme.
  • Pazar Düzenleme: İlanların fiyatını güncelleme, vitrine ekleme veya yayından kaldırma.
  • Log Kayıtları: Kim, kime, neyi, kaça sattı? Tüm ticaret geçmişi saniyesi saniyesine kayıt altında.
  • Ödeme Talepleri: Kullanıcıların bakiye bozdurma isteklerini tek tıkla Onaylama veya Reddetme Red edilen bakiye Hesaba iade edilir çekim onaylanırsa EP hesaptan silinir

Teknik Altyapı​

  • Backend: Saf PHP (Yüksek Performans, Framework şişkinliği yok)
  • Frontend: TailwindCSS (Modern, Responsive Tasarım)
  • Database: MySQL / MariaDB (PDO Entegrasyonu)
  • JS Library: jQuery + SweetAlert2 (Akıcı Animasyonlar)
1770035668724.webp
1770035715336.webp



1770035749966.webp
1770035796158.webp
1770035814243.webp
1770035882560.webp
1770074129910.webp
1770074196741.webp
1770035935016.webp
28933 eklentisini görüntüle28934 eklentisini görüntüle28935 eklentisini görüntüle28936 eklentisini görüntüle
28937 eklentisini görüntüle



TIKLA GİT
 
Son düzenleme:
bunu bana ateşlesen cok güzel olur bu tarz bir Scripti lazım acmak için degil projem için lazım sıfırdan yapmak zaman kayıp warez olmayan acık kaynak lazım
 
Merhaba,

Açık kaynak hali ile birlikte satılık ise fiyat bilgisi sağlar mısınız? Proje hakkında da teknik bilgileri de sağlarsanız sevinirim.

Saygılarımla
 
Discord üzerinden eklerseniz detaylı konuşabiliriz discord: catli06

Tasarım ve yeni fixler değişiklikler uygulandı açıklamaya eklendi.
 
Son düzenleme:
Test için bir link iletir misin deneyelim ve ek olarak php sürümü ve kullandığın kodlara dair konuda bilgi geçsen çok iyi olurdu , yanlış anlama sakın konunu baltalamak amacıyla yazmadım. Ama ben şunları da konuda görmek isterdim ;

- Brute force koruması ,
- recaptcha
- hassas verilerin maskelenmesi ,
- günlük - haftalık yedekleme / rollback
- cache poisoning
- örneğin backendde ; admin=1, user_id=5 gibi parametreler var mı ?
- IDOR koruması ; ID yerine session-bound token var mı ?
- DB Kullanıcısı root mu ? ; DROP, ALTER yetkileri kapalı mı ?


xss engeli gördüm fakat ;
XSS oldu diyelim ; CSP inline script engelli eval() yok - inner HTML yerine escape edilmiş output var mı ?

aynı anda kazanma engeli için ;
SELECT UPDATE ayrı mı çalışıyor ? Lock mekanizması varsa nasıl bir kod ?

Nesne Market İadesi: Satılmayan veya teklif almayan eşyalar, 7 günün sonunda otomatik olarak Nesne Market deponuza güvenle iade edilir.

satıldı ama cron yanlış çalışırsa ? item alıcıya da gitti satıcıya da ?

CSRF Koruması: Tüm form verileri CSRF token ile şifrelendi; sitenin iframe içerisinde açılması engellenerek "Clickjacking" saldırılarına karşı önlem alındı.

auth ve session , IDOR güvenliği tam yapılmamışsa csrf varmış yokmuş kimse umursamaz.

Farklı tarayıcılarda aynı hesap üzerinden işlemler için ; user_id LOCKED var mı ? eğer varsa kritik işlemler için kesin locklanıyor mu ?
 
Test için bir link iletir misin deneyelim ve ek olarak php sürümü ve kullandığın kodlara dair konuda bilgi geçsen çok iyi olurdu , yanlış anlama sakın konunu baltalamak amacıyla yazmadım. Ama ben şunları da konuda görmek isterdim ;

- Brute force koruması ,
- recaptcha
- hassas verilerin maskelenmesi ,
- günlük - haftalık yedekleme / rollback
- cache poisoning
- örneğin backendde ; admin=1, user_id=5 gibi parametreler var mı ?
- IDOR koruması ; ID yerine session-bound token var mı ?
- DB Kullanıcısı root mu ? ; DROP, ALTER yetkileri kapalı mı ?


xss engeli gördüm fakat ;
XSS oldu diyelim ; CSP inline script engelli eval() yok - inner HTML yerine escape edilmiş output var mı ?

aynı anda kazanma engeli için ;
SELECT UPDATE ayrı mı çalışıyor ? Lock mekanizması varsa nasıl bir kod ?



satıldı ama cron yanlış çalışırsa ? item alıcıya da gitti satıcıya da ?



auth ve session , IDOR güvenliği tam yapılmamışsa csrf varmış yokmuş kimse umursamaz.

Farklı tarayıcılarda aynı hesap üzerinden işlemler için ; user_id LOCKED var mı ? eğer varsa kritik işlemler için kesin locklanıyor mu ?
Cevaplayayım hocam estağrurullah yazmanız çok iyi oldu güncellemede dediğiniz recaptcha getireceğim günlük haftalık yedekleme c panel ile yapılabilir otomatikleştiren bir sisteme gerek duymadım yinede ektra eklenebilir Web Cache Poisoning den kastınız xss ile veya java ile istek atma ise bunu yapamazlar engelli (Admin Paneli, Login, Market) dinamik içerik üretiyor ve doğrudan bir "Caching Header" (önbellekleme talimatı) içermiyor. Ama yinede dosyaların cache depolamasını engelleyecek bir ektra require uygulanicak IDOR koruması ; şuan session csrf şifreleme mevcut idoru gelecek güncellemede ekleyebilirim db kullanıcısı farketmiyor ama sqlda işlem için yazma silme yapması gerekli CSP inline script engelli output engelide gelecek güncellemede eklenecekler arasında SELECT UPDATE ayrı mı çalışıyor ? Lock mekanizması varsa nasıl bir kod ?
<span>$aucQ</span> = <span>$db</span>-&gt;prepare(<span>"SELECT * FROM web_auctions WHERE id = ? AND ... FOR UPDATE"</span>);<br>

Bu komut, veritabanına şunu der: "Ben bu açık arttırmayı güncelleyeceğim, ben işimi bitirene kadar (Commit/Rollback yapana kadar) başka hiçbir işlem bu satıra dokunmasın, hatta bu satırı okumak için beklemede kalsın." Bu sayede iki kişi aynı milisaniyede teklif verse bile, veritabanı onları sıraya koyar. Birincinin işlemi bitmeden ikincinin işlemi başlamaz. satıldı ama cron yanlış çalışırsa ? item alıcıya da gitti satıcıya da ? cron kullanmıyorum ilan sisteminde satın alım sql taraflı gerçekleşiyor havuzdan alıp alıcının nesnesine yollanıyor nesne market dolu ise kontrol ediyor dolu ise işlem yapmaz nesne dolu uyarısı verir item satıcıdan ilana girilince anında envanterden siliniyor havuza geliyor :) satıcının bu itemi geri alması imkansız Farklı tarayıcılarda aynı hesap üzerinden işlemler için ; user_id LOCKED var mı ? buda gelecek güncellemede gelecektir. websitesine kurulum yaptığımda özelden bilgi vereceğim php 8 sürümünü kullanıyorum yorumunuz için teşekkürler bazı güvenlik kısımlarını farkettiniz en yakın zamanda güncelleme ile konuyu güncelleyeceğim inşallah test sitesinide yayına eklerim ozaman
 
Cevaplayayım hocam estağrurullah yazmanız çok iyi oldu güncellemede dediğiniz recaptcha getireceğim günlük haftalık yedekleme c panel ile yapılabilir otomatikleştiren bir sisteme gerek duymadım yinede ektra eklenebilir Web Cache Poisoning den kastınız xss ile veya java ile istek atma ise bunu yapamazlar engelli (Admin Paneli, Login, Market) dinamik içerik üretiyor ve doğrudan bir "Caching Header" (önbellekleme talimatı) içermiyor. Ama yinede dosyaların cache depolamasını engelleyecek bir ektra require uygulanicak IDOR koruması ; şuan session csrf şifreleme mevcut idoru gelecek güncellemede ekleyebilirim db kullanıcısı farketmiyor ama sqlda işlem için yazma silme yapması gerekli CSP inline script engelli output engelide gelecek güncellemede eklenecekler arasında SELECT UPDATE ayrı mı çalışıyor ? Lock mekanizması varsa nasıl bir kod ?
<span>$aucQ</span> = <span>$db</span>-&gt;prepare(<span>"SELECT * FROM web_auctions WHERE id = ? AND ... FOR UPDATE"</span>);<br>

Bu komut, veritabanına şunu der: "Ben bu açık arttırmayı güncelleyeceğim, ben işimi bitirene kadar (Commit/Rollback yapana kadar) başka hiçbir işlem bu satıra dokunmasın, hatta bu satırı okumak için beklemede kalsın." Bu sayede iki kişi aynı milisaniyede teklif verse bile, veritabanı onları sıraya koyar. Birincinin işlemi bitmeden ikincinin işlemi başlamaz. - örneğin backendde ; admin=1, user_id=5 gibi parametreler var mı ? backkendde player isimleri kullanılıyor ?seller=hesapadı şeklinde satıldı ama cron yanlış çalışırsa ? item alıcıya da gitti satıcıya da ? cron kullanmıyorum ilan sisteminde satın alım sql taraflı gerçekleşiyor havuzdan alıp alıcının nesnesine yollanıyor nesne market dolu ise kontrol ediyor dolu ise işlem yapmaz nesne dolu uyarısı verir item satıcıdan ilana girilince anında envanterden siliniyor havuza geliyor :) satıcının bu itemi geri alması imkansız Farklı tarayıcılarda aynı hesap üzerinden işlemler için ; user_id LOCKED var mı ? buda gelecek güncellemede gelecektir. websitesine kurulum yaptığımda özelden bilgi vereceğim php 8 sürümünü kullanıyorum yorumunuz için teşekkürler bazı güvenlik kısımlarını farkettiniz en yakın zamanda güncelleme ile konuyu güncelleyeceğim inşallah test sitesinide yayına eklerim ozaman
 
Geri
Üst