• 24-04-2010, 11:48:11
    #1
    basit bişey yaptım amatörce paylaşım işe yarasın bari geliştiren olursa güzel bişey aslında
    haber.php?Id='a vs yani int olmayan degerler girildiginde adres satırına ip banlıyor. aynı ipten tekrar yaparsa veri tabanındaki saat güncelliyor
    biraz ileri gidilip belli bir zaman sonra ip banı otomatik kaldırılabilir vs işte

    ip.php
    <?php 
    
    mysql_connect("localhost","root","");
    mysql_select_db("ip");
    
    function guvenlik($get){
    if(is_numeric($get)){
    	
    	}else{
    		echo 'İP ADRESİNİZ BANLANMIŞTIR';
    		$ip = $_SERVER['REMOTE_ADDR'];
    		$tarih = date("d.m.y H.i.s");
    		
    		$kontorl =mysql_num_rows(mysql_query("SELECT zararli_ip FROM banla WHERE zararli_ip='$ip'"));
    		if($kontorl>0){
    			$update = mysql_query("UPDATE  banla SET tarih='$tarih'");
    			}else{
    		
    		$sql = mysql_query("INSERT INTO banla(zararli_ip,tarih)VALUES('$ip','$tarih')");
    		
    		}
    		}
    		}
    
    ?>
    index.php vs
    <?php
    
    
    include('ip.php');
    
    $ip = $_SERVER['REMOTE_ADDR'];
    
    $kontorl =mysql_num_rows(mysql_query("SELECT zararli_ip FROM banla WHERE zararli_ip='$ip'"));
    		if($kontorl>0){
    			echo 'BU SİTEDEN UZAKLAŞTIRLDINIZ';
    			}else{
    			
    			$get = guvenlik($_GET['Id']);
    				
    				echo 'Herşey Yolunda ';
    				}
    
    
    
    ?>
    sql dosyası

    http://hotfile.com/dl/39543653/8e2f26a/ip.sql.html
  • 24-04-2010, 11:51:25
    #2
    Süper birse hemen sistemi kurcam.
    Paylasim icin tskler
  • 25-04-2010, 00:42:38
    #3
    Eğer integer bir data tipi gelmesini istiyorsanız intval() metodunu kullanabilirsiniz. Kullanıcıdan gelen tüm dataları check edip SQL'e öyle insert ederseniz bir problem kalmaz.
    Zaten gelen dataları filtrelediğinizde SQL Injection'a karşı önlem almış oluyorsunuz.

    Bu tür bir function'da kullanılabilir tabii.
  • 25-04-2010, 00:46:47
    #4
    sunucuoptimizasyon.com
    Güncel kuralları olan bir mod_security aynı görevi görür.
  • 25-04-2010, 00:56:09
    #5
    Doğru söylüyorsun fakat ben Cross Server Platform düşünmüştüm.
    Apache server haricinde mod_security büyük ihtimalle çalışmayacaktır.
  • 25-04-2010, 01:05:50
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    SQL injection sadece veriyi filtrelemediğinde mi olur? yani merak ettiğim veriyi filtreleyince her türlü güvendemisin?
  • 25-04-2010, 01:11:03
    #7
    Kullanıcıdan gelen datalar kontrollü şekilde DB'ye gidiyorsa SQL Injection açısından güvendesin demektir.

    Kendi yazdığın programdada oluşabilecek handicap'ları önceden görerek kodlarını safe code'a çevirirsen iyi olur.
    Örneğin; eğer bir integer değer hiç eskiye düşmeyecekse, içeride bir metodta HTML kodunu handle edip SQL'e gönderiyorsan gibi. Bunları kontrollü gerçekleştirmen gerek. Yoksa DB'ne zarar verebilirsin.

    Tabii bu zarar içeriden geleceğinden SQL Injection'daki gibi olmayacaktır ama uygulamanın istikrarını tehlikeye atan bir durumdur.

    İyi Çalışmalar.
  • 25-04-2010, 01:16:05
    #8
    google botu da arada banlaması muhtemel gibi geldi
  • 25-04-2010, 01:25:05
    #9
    TechExpert adlı üyeden alıntı: mesajı görüntüle
    Kullanıcıdan gelen datalar kontrollü şekilde DB'ye gidiyorsa SQL Injection açısından güvendesin demektir.

    Kendi yazdığın programdada oluşabilecek handicap'ları önceden görerek kodlarını safe code'a çevirirsen iyi olur.
    Örneğin; eğer bir integer değer hiç eskiye düşmeyecekse, içeride bir metodta HTML kodunu handle edip SQL'e gönderiyorsan gibi. Bunları kontrollü gerçekleştirmen gerek. Yoksa DB'ne zarar verebilirsin.

    Tabii bu zarar içeriden geleceğinden SQL Injection'daki gibi olmayacaktır ama uygulamanın istikrarını tehlikeye atan bir durumdur.

    İyi Çalışmalar.
    Joomlada sql injection açıkları oluyor. F-secure gibi bir güvenlik firması bile bu yüzden hacklendi. yani bu adamlar veriyi kontrollü gönderemediklerinden mi bu açıklar ortaya çıkıyor yoksa arkada dönen başka şeyler mi var?