vehbiakdogan

Senior Sofware Developer

PHP

Baş Belası Botnet Saldırısı Ve Engellenmesi

merhaba arkadaşlar neredeyse bir haftadır baş etmeye çalıştığım genelde yurt dışından siteme ping atan bazı ip adresleri vardı. ilk başta işin küçük birşey olduğunu düşünerek sadece ip leri engelleyerek çözebileceğimi düşündüm.

Daha sonra ip adreslerini engellememe rağmen hiçbir değişme olmadı çünkü zararlı botlar sürekli ip değiştiriyormuş. Bunun için farklı farklı çözümler ürettim hepsinin ortak noktasını bulmam lazımdı.

Daha sonra Siteye giren ziyaretçilere bakınca zararlı botların internet explorer 5-6 tarayıcısından saldırı yaptıklarını gördüm ve explorer 5-6 tarayıcılarından girişi engelledim.

Şimdi sizlere web sitemize istediğimiz tarayıcıdan giriş nasıl engellenir onu göstereceğim.

Web sitesinde tarayıcı girişlerini kotrol etme

Bildiğiniz üzere tarayıcı bilgisini biz user_agent ile alıyoruz. evet bunun için öncelikle sitemizin kök dizininde bir .htacess dosyası oluşturuyoruz. eğer var ise açıyoruz ve
Aşağıdaki kodları içine yapıştırıyoruz.

RewriteCond %{HTTP_USER_AGENT} MSIE\ ([56])\.
RewriteRule .* - [F]

Bu Kod bizim i.e 5-6 tarayıcılarından sitemize girişi engelliyor. eğer test etmek isteyen olursa chrome mağazasında User-agent Switcher Eklentisini kullanarak test edebilirler.

Gelen botlara ait bilgiler aşağıdaki gibi oluyor genelde



120.43.24.173 (1210 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
27.150.239.126 (907 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
110.85.103.150 (884 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727 ; .NET CLR 4.0.30319)
140.237.38.170 (508 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
110.85.126.156 (501 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705)
140.237.2.77 (475 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727 ; .NET CLR 4.0.30319)
140.237.38.128 (454 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
110.85.115.221 (452 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) )
220.161.169.139 (417 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.0.3705)
140.237.36.49 (394 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
193.201.224.184 (343 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
27.150.209.156 (339 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
220.161.168.89 (329 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
120.43.21.20 (312 Kere Girdi) Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
.htaccessİşletim SistemleriLinuxPHPSorun Ve Çözümler

Php Büyük Formlarda Kolay Veri Kontrolü

Merhaba Arkadaşlar Büyük Form verilerinden gelen verileri tek tek kontrol etmek oldukça sıkıcı oluyor bu yüzden tüm form elemanlarını tek tek kontrol ettirmek yerine toplu kontrol ettirmemiz bizim yararımıza olacaktır.
Örneğin: Elimizde büyük bir insan kaynakları formu olsun en az 50 tane veri geliyor bu verilerin tek tek posttan alınması ve alınan postun tek tek kontrol edilmesi oldukça sıkıcı ve zor olacaktır.

Bizde şimdi bunu nasıl kolaylaştırabiliriz ona bakacağız.

Post Methodu İle Gelen Verilerin Kontrolü

Formdan verilerin post edildiğini varsayalım.

<?php
if($_POST) {
	
	$gelenVeriler = $_POST; // gelen verileri bir diziye atttık 
	
	foreach($gelenVeriler as $formName => $values) {
		// verilerden boş gelen varmı diye bakalım 
		if(empty(trim($values))) echo "Formdaki [$formName] Elemanı Boş !\n"; 
		
		
	}

}

?>

Şeklinde Kontrol Edebiliriz.

$_POST methodumuz bir array olduğu için bu işlemi yaptık 🙂

GET Methodu İle Gelen Verilerin Kontrolü

Kodlarda pek bir değişiklik yok aslında. sadece bu sefer gelen methodumuz farklı $_GET Methodu Bu Yüzden üstteki kodlarda $_POST yerine $_GET yazacağız.

<?php
if($_POST) {
	
	$gelenVeriler = $_GET; // gelen verileri bir diziye atttık 
	
	foreach($gelenVeriler as $formName => $values) {
		if(empty(trim($values))) echo "Formdaki [$formName] Elemanı Boş !\n"; 
		
		
	}

}

?>

Kodlarımız Bu kadar arkadaşlar uzun formlarda kendimizi yormaya hiç gerek yok 🙂
Bol Kodlu günler 😉

PHP

Php Yönlendirme Fonksiyonu

Merhaba arkadaşlar bugün Sizlere genelde kullandığım sayfa yönlendirme fonksiyonu paylaşmak istiyorum.
Fonksiyonumuz Ve Kullanımı

<?php
/* 
	Bu PHP Dosyasi Vehbi Akdogan Tarafindan Kodlanmistir.
	E-Posta: mf.leqelyy@gmail.com
	Web: vehbiakdogan.com
*/

function git ($url, $zaman = 0){
	if($zaman){
		if(!headers_sent()) {
			header("Refresh: {$zaman}; url={$url}");
		}else {
			echo '<meta http-equiv="refresh" content="'.$zaman.';URL='.$url.'">';
		}
	}else {
		if(!headers_sent()) {
			header("Location: {$url}");
		}else {
			echo '<meta http-equiv="refresh" content="0;URL='.$url.'">';
		}
	}
}

git("index.php",5); // 5sn sonra 
git("index.php"); // Hemen  

?>;

Html-Html5PHP

Php ile yazıyı sese çevirmek

Merhaba Arkadaşlar Bu yazımızda Google Translate Api kullanarak bir yazıyı ses dosyasına Çevirmeyi Göreceğiz.
Artık Vehbiakdogan.com u açtığım için yazdığım örneklerin demolarınıda göreceksiniz bundan sonra 🙂

Yazılmış olan bir eklentiden faydalanarak ses dosyamızı oluşturmuş olacağım kodlar fazla olduğu için direk dosyayı sizlerle paylaşacağım.
Kodalra bakarak kolayca anlayabilirsiniz. anlamadığınız yerleri sorabilirsiniz 🙂

Demo | Download

PHP

Default parametreli fonksiyonlar

Genelde programlama yaparken default parametreli fonksiyonları oldukça sık kulanırız. peki nedir bu default parametreli fonksiyonlar ?
Default parametreli fonksiyonlar Bizim parametrelerimizi dinamikleştirmemizi sağlıyor biraz daha açıklayacak olursak diyelimki fonksiyonumuzun iki parametresi var normal bir fonksiyonda iki parametre ile çalışıyorsa eksik veya fazla parametre girdiğimizde hata verecektir ama default parametre kullanırsak fonksiyonumuz 1 parametre ile de çalışacaktır. Ayrıca parametrelerimize bir varsayılan değer atamamıza olanak sağlıyor
Örneğin iki sayıyı toplayan bir fonksiyon yazalım.

 function topla(a,b){  
return a+b;
}

Yukarıdaki Fonksiyonumuza parametre girmessek hata verecektir.

ŞimdiDefault Yapıcılı olarak değiştirelim fonksiyonumuzu

 function topla(a=0,b=0){  
return a+b;
}

Evet açıklayacak olursak fonksiyonumuza diyoruzki a sayısı ile b sayısını topla
ordaki yazdığımız 0 ise bizim default parametremiz oluyor. yani diyoruzki biz eğer a veya b değeri girmezsek girmediğimiz parametrenin değeri 0 olsun. fonksiyonun kullanım şekillerini görecek olursak ;

 function(a=0,b=0){  
return a+b;
}
topla(5); // sadece a parametresi 5 olur b=0
topla(5,4); // a=5,b=4
topla(); // a=0,b=0
// şeklinde kullanabiliriz
C++PHP

Php exec() Fonksiyonu Nedir , Nasıl Kullanılır ?

Merhaba arkadaşlar bu yazımda sizlere php exec() komutundan bahsetmek istiyorum ama öncelikle birkaç bişiden bahsetmek istiyorum 🙂

Safe Mod (Güvenli Mod) Nedir ?

Safe mod bir nevi güvenlik kontrolüdür diyebiliriz sunucularımızda safe mod genellikle açık olur ve sunucumuza aşırı yüklenmeyi , zararlı dosyalar yüklenmesini (trojan vb.) engeller.
Safe moddan neden bahsettik diye sorarsanız php de exec() fonksiyonunu kullanabilmemiz için safe modun kapalı olması gerekir.
Safe modunuz eğer açık ise sunucunuzda php.ini dosyanızı açarak içinde safe_mod şeklinde aratıp karşısındaki on yazısını off yaparak safe modu kapatmış olursunuz.

exec() Fonksiyonu Nedir , Kullanımı

Bildiğiniz üzere kullandığımız serverlerde normal bir bilgisayardır ve sunuculardada işletim sistemi olur. genellikle biz php ile kodlanmış sitelerimiz için linux işletim sistemini kullaırız bende exec() komutunda linux komutlarını kullanacağım.
Unutmadan söyleyeyim exec() fonksiyonu serverde arkaplanda komut çalıştırmak için kullanılır.
örnekle açıklayacak olursak :
Linuxta içinde bulunduğumuz dizine ait dosya ve dizinleri ls komutuyla listeleriz.
php ile dizinlerimizi listeletmek istersek :



$ucBirim="ls"; // çalıştırılacak kodumuz

exec($ucBirim,$gelenVeri); // gelen verimiz dizi şeklinde olacaktır

// dizinlerimizi yazdıralım

foreach($gelenVeri as $attr){
echo "$attr <br/>"; // verimizi yazdırdık
}

Yukarıda gördüğünüz gibi linuxtaki kodumuzu kullandık birde windows için pink attırma örneği yaparak anlatımımızı pekiştirip nokta koyalım.

Php exec() ile Pink atmak

öncelikle vindowsta sitemize ping atmak için

ping siteadi.com şeklinde ping attırırız hemen kodlarımıza geçelim


$cmd="ping siteadi.com"; // ping atma kodumuz
exec($cmd,$gelen); // kodumuzu çalıştıralım
foreach($gelen as $veri)
echo "$veri <br/>"; // ekranda ping kodlarımız çıkacaktır.


Daha fazla bilgi için iletişim kısmından veya yorum atarak yardım alabilirsiniz.

PHP

Php uniqid() fonksiyonu ve kulanımı

Php uniqid() fonksiyonu rastgele değerler üretmek için kullanılır. kullanımı oldukça basittir. örnekleyecek olursak

 <?php  
echo uniqid(); // rastgele değerimiz
?>

Php uniqid() fonksiyonumuzun farklı şekilde kullanımlarıda mevcut örneğin istediğimiz bir değerden sonra rondom değerler üretmesini isteyebiliriz . örnek verecek olursak

 <?php  
echo uniqid("vehbiakdogan_"); // vehbiakdogan_ den sonra rastgele değerimiz
?>

Son olarak da fonksiyonumuza true parametresi vererek daha karmaşık bir değer ürettirebiliriz. örneğin :

 <?php  
echo uniqid("vehbiakdogan_",true); // vehbiakdogan_ den sonra rastgele değerimiz(daha karmaşık)
?>
PHP

PHP ile mobil tarayıcı Kontrolü yapmak

Arkadaşlar yaptığım bir sistemde mobil tarayıcılara farklı bir reklam web ziyaretçilere ise ayrı bir reklam göstermem gerekiyordu. bunun içinde tm mobil tarayıcıları bilmemiz gerekekiyor. internette araştırma yaparken Mobile_Detect Adlı bir class işimi gördü bende bu class ı sizinle paylaşmak istedim öncelikle mobiledetect.net adresinden classımızı indirelim. ardından bir php dosyası açalım ve kodlarımızı yazmaya başlayalım

 <?php  
require_once 'Mobile_Detect.php'; // klasımızı sayfaya ekledik
$detect = new Mobile_Detect; yeni bir nesne yarattık
if ( $detect->isMobile() ) { // classımızın isMobile methodunu çağırdık
echo 'mobilse kdlar buraya';
}else{
echo 'pc için kodlar';
}
?>

Daha detaylı bilgi için mobiledetect.net Adresine bakabilirsiniz. iyi çalışmalar.

PHP

wamp serverde .htaccess dosyasını çalıştırmak

wamp serveri ilk yüklediğimizde bzen .htaccess dosyasının çalışmadığını görürüz bu dosya wamp serverde nasıl aktif edilir onu göstereceğim.

öncelikle wamp serveri çalıştıralım.
ardından durum çubuğunda wamp serverin simgesine tıklayalım.
sonra Apache->Apache Modules->Rewrite Module yi bulup aktif edelim ve .htaccess dosyamız artık çalışır duruma gelecektir. eğer hala .htaccess dosyanız çalışmıyorsa wampa reset atıp tekrar deneyebilirsiniz.

.htaccessPHP

include edilen sayfalara doğrudan erişimi engelleme

Arkadaşlar küçük sistemler yazarken genelde veritabanı bilgilerini bir php dosyasında yazarız. diyelimki dışardan biri bu dosyanı yolunu ögrendi ve sayfaya direk giriş yaptığında bizim veritabanı kulalnıcı adımıza şifremize kısacası veritabanımıza ulaşır eğer hosting şifremizde veritabanı şifremizle aynı ise kendi elimizle sitemizi teslim etmiş oluruz. bunun için birkaç yöntem var ben size birtanesini göstereceğim.
şimdi diyelimki bilgielrimiz db.php de kayırlı olsun biz ziyaretçinin direk olarak db.php ye ulaşmasını engelleyeceğiz bunun için db.php nin üssttarafına aşağıdaki kodu eklememiz yereli olacaktır.

 if(!defined('INDEX')){  
header("Location:index.php");
exit("Bu sayfa doğrudan ulaşıma kapalı.");
}
PHP