• 18-06-2014, 18:25:58
    #10
    Selçuk adlı üyeden alıntı: mesajı görüntüle
    prepare sadece SQL Injection saldirilari icin güvenli. HTML ve javascript kodlarini önlemiyor mesela.
    Eger javascript gb. cookie alabilecegi kodlari da istemiyor iseniz ek bir fonk. gerekli yada array_map(); fonk. ile $_POST degiskenleri strip_tags gibi fonk calistirip filtre yaparsiniz.
    ozaman kullanmış olduğum cleanMe fonksiyonu bu sıkıntıyı ortadan kaldırır sanırım?
  • 18-06-2014, 18:28:06
    #11
    loc adlı üyeden alıntı: mesajı görüntüle
    Ne yalan konulayım prepare ne kadar güvenlidir ve ne kadar detaylı bir temizlik yapıyor bilmediğim için kullanıyorum. Direk $_POST verisini kullansam problem yaşamaz mıyım yani?
    Selçuk cevaplamış.
  • 18-06-2014, 20:37:33
    #12
    loc adlı üyeden alıntı: mesajı görüntüle
    ozaman kullanmış olduğum cleanMe fonksiyonu bu sıkıntıyı ortadan kaldırır sanırım?
    Aynen. Sadece orda mysql_real_escape_string kullanmaniza gerek yok.
  • 18-06-2014, 21:07:54
    #13
    Selçuk adlı üyeden alıntı: mesajı görüntüle
    Aynen. Sadece orda mysql_real_escape_string kullanmaniza gerek yok.
    Tamamdır. Çok teşekkür ediyorum.
  • 19-06-2014, 00:55:12
    #14
    Kimlik doğrulama veya yönetimden onay bekliyor.
    mysql_real_escape_string olayını, PDO'da yapan method quote() metodu. Araştırmanızı öneririm. PDO'da prepare() metodunu ve bunlara ek olarak bindParam vs gibi metotları kullanırsanız zaten escape işlemini yapmış oluyorsunuz. PDO bu güvenliği sağlıyor. query() metodu kullanarak ham sql yazacaksanız, söylediğim gibi dışarıdan sorguya giren değerleri quote() metodu ile filtreleyin. Başka bir işlem yapmanıza gerek kalmaz.

    Ayrıca, dilerseniz PDO ile ilgili olarak yazdığım PDOx sınıfına da göz atabilirsiniz.
  • 19-06-2014, 09:16:45
    #15
    _BuKi_ adlı üyeden alıntı: mesajı görüntüle
    mysql_real_escape_string olayını, PDO'da yapan method quote() metodu. Araştırmanızı öneririm. PDO'da prepare() metodunu ve bunlara ek olarak bindParam vs gibi metotları kullanırsanız zaten escape işlemini yapmış oluyorsunuz. PDO bu güvenliği sağlıyor. query() metodu kullanarak ham sql yazacaksanız, söylediğim gibi dışarıdan sorguya giren değerleri quote() metodu ile filtreleyin. Başka bir işlem yapmanıza gerek kalmaz.

    Ayrıca, dilerseniz PDO ile ilgili olarak yazdığım PDOx sınıfına da göz atabilirsiniz.
    Sizin yazdığınız sınıfı biliyorum hatta paylaştığınızda ilk yorum yapan bendim sanırım

    Aşağıdaki gibi bindParam kullanırken giden değerin ne olduğunu da belirteyim dedim. Sizce yeterli mi?

    $update = $database->prepare('update tm_pages set title= :title, text= :text, catid= :catid, status= :status where id= :id');
       $update->bindParam(':title', cleanMe($_POST['title']), PDO::PARAM_STR);
       $update->bindParam(':text', cleanMe($_POST['text']), PDO::PARAM_LOB);
       $update->bindParam(':catid', cleanMe($_POST['catid']), PDO::PARAM_INT);
       $update->bindParam(':status', cleanMe($_POST['status']), PDO::PARAM_INT);
       $update->bindParam(':id', $id, PDO::PARAM_INT);
       $update->execute();
  • 19-06-2014, 11:29:25
    #16
    Gayet sağlıklı bir sorgu. cleanMe fonksiyonuna gerek yok ama tam olarak nasıl bir filtreleme yapıyorsunuz orda onu bilmiyorum. ESCAPE işlemi yapıyorsanız, PDO'da bunun üzerine escape yapacağı için, verileriniz iki kez escape işleminden geçmiş olabilir. Kontrol etmenizi öneririm. Ama cleanMe html kodları temizlemek için vs ise (strip_tags) o zaman işleminize göre kullanabilirsiniz.
  • 19-06-2014, 11:45:35
    #17
    _BuKi_ adlı üyeden alıntı: mesajı görüntüle
    Gayet sağlıklı bir sorgu. cleanMe fonksiyonuna gerek yok ama tam olarak nasıl bir filtreleme yapıyorsunuz orda onu bilmiyorum. ESCAPE işlemi yapıyorsanız, PDO'da bunun üzerine escape yapacağı için, verileriniz iki kez escape işleminden geçmiş olabilir. Kontrol etmenizi öneririm. Ama cleanMe html kodları temizlemek için vs ise (strip_tags) o zaman işleminize göre kullanabilirsiniz.
    Teşekkürler. cleanMe fonksiyonumu ilk sayfada paylaşmıştım.

    function cleanMe($input) {
       $input = mysql_real_escape_string($input);
       $input = htmlspecialchars($input);
       $input = strip_tags($input);
       $input = stripslashes($input);
       return $input;
    }
  • 19-06-2014, 12:06:18
    #18
    stripslashes ve mysql_real_escape_string kısmını kaldırabilirsiniz. Ayrıca fonksiyonlar arasındaki bağıntıyı iyi kurmak gerek. Mesela strip_tags'dan önce htmlspecialchars kullanmışsınız. Bu şekilde olunca karakterler dönüşüme uğrayacağından strip_tags işlem yapmayabilir. önce html etiketleri temizleyip, sonra karakter dönüşümü yapın. ki bence olduğu gibi kaydetmeniz daha iyi. htmlspecialchars ile dönüşüm yaptırmayın. bu fonksiyona göre sadece strip_tags işinizi görecektir.