söyle bişi yapsak sanki biraz daha iyi olur
fonksiyon yardımı ile temiz botları tespit edip direk izin vererek sql işlemleriyle uğraştırmayalım
ip takibi ile de uğraşmayız.
public static function BotControl(){
$list = [
"Google"=>"Googlebot"
];
$regexp = "/". implode("|", $list)."/";
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match($regexp, $agent,$matches)) {
$bot = array_search($matches[0], $list);
return $bot;
}else{
return false;
}
}
daha iyi olur gibime geldi sanki ufak yüklerden kurtulmul oluruz
valla şahsen belirtilen dosya uzantılarına girmeye çalışanlar banlansın :)
sanane adamın admin yoludan veya
detay/haber ise detay.php=baslik shadabs
niye elle oraları kurcalamayı deniyorsunki :D
ben genel de inj ve xss için deneme bulunanları kısmen önlemek için
url tipime göre
id ve başlığı şifreleyip fonksiyona gönderiyorum ordan şifreyi çözüp veritabanında varmı diye
kontrol ettiriyorum eğer varsa zaten sayfa açılıyor
yoksa 404 e atıyorum direk
bu tarafından ban atmak istemiyorum çünkü sağlayıcı sorunlarından dolayı
sql de anlık bir okuma olmaz ise yok gibi görür adam normal url bazında bile girse
lamer denemesi diye ban atabilir :)
sunucuya güveniyorsam tabi onada ban atıyorum :)
detay.php ler düz çalışmadığı için haliyle hata verebilir
onlar içinde direk get yoksa diye veya boşşa gibi sorgular ile işlem yaptırıyorum
ama ordan %100 atıyorum siteden çünkü ana dizinde hiçbir detay yolum olmaz benim
biraz karışık çalışmayı seviyorum :)
site üzerindeki formlarda zaten recaptcha v3 kullanıyorum ona ekstra kendi yazdığım
token sınıfını kullanıyorum ne olur ne olmaz diye google amca bizden iyidir :)
tokenleride post ile atmıyorum oluşan token ona göre session a girer incele kısmından değiştirmeye çalışsa bile
token hatasını her türlü alır. aynı şekilde token ve token adıda
işlem sonrasında ve sayfa değiştiği anda bu sessionları boşaltıyorum.
sabit olan sayfalar atıyorum iletisim.php gibi sayfalara inj deneyenlere direk ban atıyorum
ne arıyorsun orda öyle şeylerle demi :)
lamer her yerde var malesef :))
zaten gerekli data oluştukça hergün büyür ve genişler
uzun vadede bu botların %80 i siteye zarar veremez hale gelir
burda biraz da bu botların tarama esnasında daha çok nelere baktığınıda bilmek lazım
sadece admin yolları ilk akla gelen çözüm de olablir ..
elindeki datayı da bizle paylaşabilirmisin :)
muhtemelen sen yapmışsındırda
diğer arkadşlar da yapsın diye
durum diye bi sütün ekleyin bence
0 ve 1 girilebilen
eğer 0 ise siteye girebilir
1 ise giremez olarak kodları düzenlerseniz daha iyi olur
aslına bakarsan temiz botları whitelist olşturup ordan çekip uğraşmamak lazımda
bunların sürekli ipleri değişiyordur
ki google sürekli kendi botlarını kullanıyormu yoksa sadece istatistik kovalamak için kendi alt botları varmı vb şeyler olabilir.
htaccess de yaptığın iş gerçekten mantıklı özellikle nefret ettiğim wordpress sistemini kullananlar için alternatif bir yöntem. :)
yazmaktan çok bazen düşünmek en büyük yazılımdır :)
tebrikler @qplot
dosya hostingde varmı diye önce kontrol ettir foreach içinde is_file ile
dosya varsa sildir yoksa işlem atlattır.
arada hata çıkmasınıda önlemiş olursun
$query = $db->prepare("SELECT * FROM dosyalar");
$query->execute(array());
$dosyalar = $query->fetchALL(PDO::FETCH_ASSOC);
foreach($dosyalar as $dosya){
if(is_file("dosyayolu/".$dosya["sutunadi"])){
unlink("dosyayolu".$dosya['sutunadi']);
}
}
@ işareti koymaktan kurtulursun
ilerde php 8 e geçersen hata almazsın en azından.
yok statik bilgi ile girersek gözümüzün yaşına bakmazlar tabi :D
sistemin güzel
merak ettiğim banladıktan mı türü robot diye atama yapıyorsun yoksa
eğer isp arrayın içinde bunlardan bitanesi varsa şutla mı diyorsun.
güzel düşünce tebrik ederim.
bende sana söyle bir örnek vereyim muhtemelen biliyor olabilirsin.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Article",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "www.deneme.com"},
"headline": "DENEME BAŞLIK",
"articleSection" :"Lifestyle",
"inLanguage": "tr-TR",
"wordCount" :kelime sayısı,
"image": {
"@type": "ImageObject",
"url": "logoadres,i",
"height": 700,
"width": 700
},
"datePublished": "2021-01-17T00:03",
"dateModified": "2021-01-09T00:03",
"author": {
"@type": "Person",
"name": "www.deneme.com"
},
"publisher": {
"@type": "Organization",
"name": "www.deneme.com",
"logo": {
"@type": "ImageObject",
"url": "logorul",
"width": 112,
"height": 44
}
},
"description": "sayfa açıklama"
}
</script>
sayfalarına döngülerin içine shema lar ekle
sonra
https://search.google.com/test/rich-results?hl=tr
burdan test et anladığım kadarı ile google buna da çok önem veriyor.
üstüne input kullandığın yerlerde her zaman label de kullan
sayfa içeriklerini ajax ile çağırırsan aşırı dom miktarından da kurtarırsın.
aklıma şimdilik bunlar geliyor bir kaç gündür kafayı yedirti bu hatalar sıfırladım hepsini en sonunda bi sunucu yanıt süresi kaldı onuda ana yere alınca düzelir.
üye talona bir tablo aç ip diye
üye login olduysa o tabloya login olduğu yerine ipsini yaz
session a da ip tanımla
session ip != uye->ip ye logout.
aynı sağlıyı için geçerli olmayabilir bazen.
söyle bir ek atarsın ona da
ip ye ek eklersin atıyorum zaman.ip diye bunu şifreler öyle yazıdrdısın sonra şifrelenmiş zamanı karşılaştırırsın.
hade onu da geçtim aynı zamana denk gelmezde hade gelir diyelim.
yili date(d-m-y H:i:s ) yaparsam tam zamanlı o biraz ikansıza denk gelir
hep tablo açmaktan kurtartırsın
hem açtığın tabloya kayıt et sil işlemlerinden kurtarırsın.
select * from tabloadi where istenmeyenSUTUN not ın (istenmeyensutunlar) and baslik like (:like)