• 24-11-2013, 02:50:13
    #1
    Arkadaşlar yıllardır emek verdiğimiz site bu aralar hackleniyor.
    Ne yapabilirim?

    $sorgu = mysql_query("SELECT * FROM yazilar WHERE id='$_GET[id]'");
    while($row = mysql_fetch_array($sorgu)){
    echo"<form action=\"\" method=\"post\">";
    echo"<table cellspacing=\"2\" cellpadding=\"2\">";
    echo"<tr><td align=\"right\">Başlık</td><td><input type=\"text\" name=\"baslik\" value=\"$row[baslik]\" size=\"50\"></td></tr>";
    echo"<tr><td align=\"right\">Kategori</td><td><select name=\"cid\">";
    $sorgu2 = mysql_query("SELECT id,isim FROM yazilar_kat ORDER BY isim ASC");
    while($row2 = mysql_fetch_array($sorgu2)){
    if($row2[id]==$row[cid]){$b='selected';}else{$b='';}
    echo"<option value=\"$row2[id]\" $b>$row2[isim]</option>";
    }
  • 24-11-2013, 02:54:26
    #2
    🌐 𝘀𝗼𝗰𝗶𝗳𝗹𝘆.𝗰𝗼𝗺
    PHP bilgim yok fakat evet açık var. Bilginiz varsa ben size özetliyim;

    Bir fonksiyon yazın ve ' " < > - karakterlerini replace ile silin.
    $_GET[id] verisini bir değişkene atayın. Değişken = yaparken $_GET[id] yi fonksiyondan geçirin.
    Sayfanızda $_GET[id] kullanılan her yerde o değişkeni kullanın.

    Yani demek istediğim $_GET[id] fonksiyon ile " ' - < > kodlarını süzdürün.

    Yada başka bir çözüm yolu isterseniz $_GET[id] içinde sayıdan başka birşey geçiriyorsa hata döndürün veya sayfanızı yönlendirin.

    //Düzenleme;

    Fonksiyonu buldum;
    function sqlSuzgeci($string) {
    $string = stripslashes($string);
    $string = strip_tags($string);
    $string = mysql_real_escape_string($string);
    return $string;
    }
    Bunu sqlSuzgeci($_GET[id]) olarak değişkene ata veya heryerde bu fonksiyonu kullan.
  • 24-11-2013, 03:04:01
    #3
    tolgasen adlı üyeden alıntı: mesajı görüntüle
    PHP bilgim yok fakat evet açık var. Bilginiz varsa ben size özetliyim;

    Bir fonksiyon yazın ve ' " < > - karakterlerini replace ile silin.
    $_GET[id] verisini bir değişkene atayın. Değişken = yaparken $_GET[id] yi fonksiyondan geçirin.
    Sayfanızda $_GET[id] kullanılan her yerde o değişkeni kullanın.

    Yani demek istediğim $_GET[id] fonksiyon ile " ' - < > kodlarını süzdürün.

    Yada başka bir çözüm yolu isterseniz $_GET[id] içinde sayıdan başka birşey geçiriyorsa hata döndürün veya sayfanızı yönlendirin.

    //Düzenleme;

    Fonksiyonu buldum;
    function sqlSuzgeci($string) {
    $string = stripslashes($string);
    $string = strip_tags($string);
    $string = mysql_real_escape_string($string);
    return $string;
    }
    Bunu sqlSuzgeci($_GET[id]) olarak değişkene ata veya heryerde bu fonksiyonu kullan.


    üstadım bilgim yok ama yinede yapmaya çalışacağım.
    Teşekkürler
  • 24-11-2013, 03:07:10
    #4
    🌐 𝘀𝗼𝗰𝗶𝗳𝗹𝘆.𝗰𝗼𝗺
    h2run adlı üyeden alıntı: mesajı görüntüle
    üstadım bilgim yok ama yinede yapmaya çalışacağım.
    Teşekkürler
    O zaman verdiğim kodu direkt böyle kullan.
    Ama başka yerlerdede muhtemelen açık vardır ve her yeri düzenlemen gerekli.

    function sqlSuzgeci($string) { 
    $string = stripslashes($string); 
    $string = strip_tags($string); 
    $string = mysql_real_escape_string($string); 
    return $string; 
    }  
    
    $sorgu = mysql_query("SELECT * FROM yazilar WHERE id='sqlSuzgeci($_GET[id])'");
    while($row = mysql_fetch_array($sorgu)){
    echo"<form action=\"\" method=\"post\">";
    echo"<table cellspacing=\"2\" cellpadding=\"2\">";
    echo"<tr><td align=\"right\">Başlık</td><td><input type=\"text\" name=\"baslik\" value=\"$row[baslik]\" size=\"50\"></td></tr>";
    echo"<tr><td align=\"right\">Kategori</td><td><select name=\"cid\">";
    $sorgu2 = mysql_query("SELECT id,isim FROM yazilar_kat ORDER BY isim ASC");
    while($row2 = mysql_fetch_array($sorgu2)){
    if($row2[id]==$row[cid]){$b='selected';}else{$b='';}
    echo"<option value=\"$row2[id]\" $b>$row2[isim]</option>";
    }
  • 24-11-2013, 03:15:21
    #5
    Tamam usta verdiğin gibi koydum kodları. Hackleyen vatandaş siteyi yoklayacaktır illa ki. işe yarar umarım.
    Çok teşekkür ederim bu arada..
  • 24-11-2013, 03:17:11
    #6
    hocam site adresinizi özelden gönderirseniz var olan açıklar içinde bir kaç öneride ben yazabilirim.
  • 24-11-2013, 03:38:58
    #7
    Ö.M yolladım.
  • 24-11-2013, 03:52:38
    #8
    Kimlik doğrulama veya yönetimden onay bekliyor.
    ezSQL kullanın. GET, POST, FILES gibi kullanıcıdan alınan tüm verileri ezSQL::escape() metoduyla filtreleyin.

    ayrıca bknz;
    PHP ezSQL veritabanı sınıfı kullanımı
  • 24-11-2013, 16:03:55
    #9
    saintx adlı üyeden alıntı: mesajı görüntüle
    ezSQL kullanın. GET, POST, FILES gibi kullanıcıdan alınan tüm verileri ezSQL::escape() metoduyla filtreleyin.

    ayrıca bknz;
    PHP ezSQL veritabanı sınıfı kullanımı
    Usta çok sağol videoyuda izledim yapmaya çalışacağım yapabilirsem lakin bilgin kısıtlı.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 17:03:55 -->-> Daha önceki mesaj 17:02:14 --

    Diğer açık ise,

    <?
    if($_GET[op] && file_exists("bolumler/$_GET[op].php")){
    include"ust.php";
    include("bolumler/$_GET[op].php");
    include"alt.php";
    }
    ?>

    Bu kodlar için bir öneriniz var mı?
    Burada da bariz bir açık var mı?

    function sqlSuzgeci($string) {
    $string = stripslashes($string);
    $string = strip_tags($string);
    $string = mysql_real_escape_string($string);
    return $string;
    }

    Yukarda arkadaşın yardımcı olduğu gibi burayada aynı işlemi uygulayabilir miyiz?