[linux-programlama] Re: PHP SQL Injection Kontrol

---------

From: Sancar Saran (saran@sim.com.tr)
Date: Sun 22 Jun 2003 - 20:35:44 EEST

  • Next message: Enver ALTIN: "[linux-programlama] Re: PHP SQL Injection Kontrol"

    Sanirim iyi kotu birseyler yaptim. Asagidaki fonksiyon kodu, get veya
    post edilmis degerleri kontrol etmek icin kullanilabilir.

    Unutmadan, bu fonkisyon get veya post ettiginiz degerleri array olarak
    gonderdiyseniz ise yarar. Soyleki

    input type="text" name="hede[adi]"
    input type="text" name="hede[soyadi]"

    veya

    index.php?hede[adi]=sancar&hede[soyadi]=saran

    gibi.

    Niye boyle birsekilde?

    Icerisinde cok fazla eleman olan formlar yaparken veya cok fazla secenek
    olan query string gonderdiginizde degerleri tek tek GET veya POST
    supergloballerinden almak adami yoruyor.

    Nasil Kullanilir.

    $hede = do_var("hede"); bu hicbir kontrol yapmadan size post veya get
    degelerini dondurur.

    $hede = do_var("hede",'1'); bu standart kontrolu uygular [^A-Za-z0-9_]

    $hede = do_var("hede",'1',"antin|kuntin|osman|mehmet"); bu sekilde
    sadece belirtilen hede elemanlari kontrol edilir.

    $hede = do_var("hede",'1','',"regexpatern"); bu sekilde tum hede
    elemanlari sizin vermis oldugunu paterne gore kontrol edilir

    $hede = do_var("hede",'1',"antin|kuntin|osman|mehmet","regexpatern"); bu
    sekilde belirtilen hede elemanlari verilen paterne gore kontrol edilirler.

    Niye Copyright falan fisman var. Bu benim yazmaya calistigim CMS sistemi
    icinde kullandigim bir fonksiyon. Yarin triviri olmasin diye..

    Kolay gelsin. (iyi de lan ben niye kendi sorumu kendim cevapliyorum,
    delimiyim neyim ?)

    <?php
    /*
      PHP?NET: Next Generation Web Site Generator Library.

      (C) 2000 - 2003 By Sancar Saran

      This software is dual licensed using BSD-Style and LGPL.
      Where there is any discrepancy, the BSD-Style license will
      take precedence. This means you can use it in proprietary
      and commercial products.
    */

    function do_var($strVar,$strCheck=0,$strKeys=0,$strPattern=0)
    {
      $arrVarG = $_GET["$strVar"];
      $arrVarP = $_POST["$strVar"];
      $arrRet = array_merge($arrVarG,$arrVarP);

      if(!$strPattern)
      {
       $strPattern = "[^A-Za-z0-9_]";
      }

      if($strCheck === "1")
      {
       @$arrKeys = array_keys($arrRet);
       @$intSize = sizeof($arrRet);
       if($strKeys)
       {
        $arrCKeys = explode("|",$strKeys);
        $intCSize = sizeof($arrCKeys);
        for($i=0;$i<$intSize;$i++)
        {
         for($z=0;$z<$intCSize;$z++)
         {
          if($arrKeys[$i] == $arrCKeys[$z])
          {
           if(preg_match("/$strPattern/",$arrRet[$arrCKeys[$z]]))
           {
            die("<div style=\"background-color:red; color:white;
    font-weight:bold;\">\n SQL INJECTION DETECTED. SCRIPT EXECUTION
    STOP<br></div>\n");
           }
          }
         }
        }
       }
       else
       {
        for($i=0;$i<$intSize;$i++)
        {
         if(preg_match("/$strPattern/",$arrRet[$arrKeys[$i]]))
         {
          die("<div style=\"background-color:red; color:white;
    font-weight:bold;\">\n SQL INJECTION DETECTED. SCRIPT EXECUTION
    STOP<br></div>\n");
         }
        }
       }
      }
      return $arrRet;
    }
    ?>

    Sancar "Delifisek" Saran.


  • Next message: Enver ALTIN: "[linux-programlama] Re: PHP SQL Injection Kontrol"

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.