• 26-07-2016, 11:55:19
    #1
    Şu aşağıdaki kod yapısında escape string kullanmadım çünkü açık olucağını düşünmüyorum fakat sizde bir bakar mısınız emin olalım

    Olay : Canlı arama fonkisyonu geliştirdim xml bir dosyadan çekiyorum

    livesearch.php dosyam var burada _GET kullanıyorum fakat bu dosyada sql bağlantısı yapmadım.


    index.php de script .js ile geliyor _GET alımı


    script; ( extra soru; bu arada kodun numaralarında kırmızı çıkıyor js kodunda hata mı var )


     function showResult(str) {
      if (str.length==0) { 
        document.getElementById("livesearch").innerHTML="";
        document.getElementById("livesearch").style.border="0px";
        return;
      }
      if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
      } else {  // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          document.getElementById("livesearch").innerHTML=xmlhttp.responseText;
          document.getElementById("livesearch").style.border="1px solid #A5ACB2";
        }
      }
      xmlhttp.open("GET","livesearch.php?q="+str,true);
      xmlhttp.send();
    }
    
    
    function penac(theURL,winName,features) {
      	window.open(theURL,winName,features);
    }


    php ;

    $xmlDoc->load("links.xml");
    
    
    ara = $_GET["ara"];



    Böyle bir kullanımda injec açığı gelir mi?

    not : ne olur ne olmaz diye livesearche escape string koyayım dedim fakat bu sefer database bağlantısı olmadığı için hata verdi.
  • 27-07-2016, 16:03:56
    #2
    kullanmakta kararsızım escape string olmadan bu şekilde bir injec açığı gelir mi kodlar yukardadır bilgili bir kişiden cevap bekliyorum
  • 27-07-2016, 16:10:57
    #3
    PHP dosyasındaki ara değişkeni herhangi bir işlemden geçirilmeden mysql_* fonskiyonunda kullanılıyorsa;

    https://domain.com/livesearch.php?q={{injection}}
    şeklinde çağırıldığı zaman zarar verilebilir.

    PHP dosyası tam olarak paylaşılmadığından yorum yapmak zor ama önlem almanızı tavsiye ederim.

    Kendi sitenizde tırnak, çift tırnak işaretleriyle arama yaparak bakabilirsiniz. Hata verirse sıkıntı.
  • 27-07-2016, 16:21:35
    #4
    $xmlDoc->load("links.xml");
    ara = $_GET["q];

    live search kısmında problem teşkil edebileceğini düşündüğüm kısım bu şekilde,

    geri kalan kodlar strstr vb gibi arama kriterleri oluşturuyor.


    çift tırnak tırnak yaptığım zaman bozulma olmuyor fakat livesearch.php ye q herhangi bir değer vermediğim zaman undefined hatası alıyor.


    escape string yapıp koyayım diyorum config bağlantısı olmadığı için kabul etmiyor, config koyup escape string dersem kesin sorunu kurtarırım o zaman?


    index.php de ise yukarıda verdigim js kodu var zaten o ile çağırıyorum livesearch ı
  • 27-07-2016, 16:31:35
    #5
    Anladığım kadarıyla veritabanı bağlantısı yok? links.xml içeriğine göre arama yapıyorsanız bi sıkıntı olacağını sanmıyorum.
  • 27-07-2016, 16:34:07
    #6
    evet veritabanı bağlantısı livesearch.php dosyasında yok lakin

    anasayfa dosyasında veritabanı bağlantısı var

    anasayfa dosyasında yukarıda verdiğim .js kodu bulunmakta


    xmlhttp.open("GET","livesearch.php?q="+str,true);
    xmlhttp.send();


    şeklinde livesearch.php yi çekiyor. anasayfa


    ya kodu hazır aldım zaten keşke önceden paylaşsaydım

    w3school büyük bir yer zaten;

    www.w3schools.com/php/php_ajax_livesearch.asp

    buradakinin aynısı injec olur mu