PHP

10 bejegyzés megtekintése - 171-180 / 235
  • Szerző
    Bejegyzés
  • #2024618
    goraki
    Felhasználó

      Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek pl

      Code:
      mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);

      , vagy át kell addslashoznom?
      Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.

      #2024619
      xcut
      Felhasználó
        goraki wrote:
        Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek pl

        Code:
        mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);

        , vagy át kell addslashoznom?
        Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.

        Ha a magic_quotes_gpc be van kapcsolva, akkor nem kell, bár én azért ha számot akarok így berakni, előtte kiszedem egy preg_replace()-cel a nem oda való dolgokat. (valami ilyesmi mintával „#[^0-9]#i”).
        De! A PHP 6-ban nem lesz magic_quotes_gpc. Erre készítsd fel a programod!

        #2024620
        MyCroft
        Felhasználó
          goraki wrote:
          Működik-e az sql-injekció, ha a gpc qoutes be van kapcsolva? Úgy értem, hogy lehet-e közvetlen $_POST adatot adjak át mysql query-nek pl

          Code:
          mysql_query(„SELECT * FROM valami WHERE mezo='”.$_POST[‘ertek’].”‘);

          , vagy át kell addslashoznom?
          Nem értek az ilyen haxorkodáshoz így kipróbálni nem tudom, de azért megkérdem, hogy hátha tud valaki segíteni. Eddig addslashoztam, de rondán nézet ki az eredmény ezért kíváncsi vagyok, hogy elhagyhatom-e mindenféle kellemetlenség nélkül.

          Talán a legcélszerűbb, valami hasonlót csinálni:

          Code:
          $text = $_POST[‘text’];
          if (!get_magic_quotes_gpc())
            $text = addslashes($text);

          Márcsak azért is, mert mi van akkor, ha olyan gépre kerül a honlap, ahol ki van kapcsolva a magic_quotes_gpc?

          Számoknál meg a minimum, amit illik egy konverzió

          Code:
          $number = (int)$_POST[‘darab’];

          De kérdeznék én is, ha már szóbakerült az sql injection.
          Az addslashes() mennyire véd ellene?

          Jelenleg én valami hasonló mehanizmust használok:

          Code:
          $text = $_POST[‘text’];
          if (!get_magic_quotes_gpc())
            $text = addslashes($text);

          if (!CheckForInjection($text)) {
            exit;
          }

          Ahol a CheckForInjection függvény még nem csinál semmit, éppen azért mert még nem olvastam utána, hogy mi az amire az addslashes után még figyelni kell.

          Gondolok itt olyasmikre, hogy pl a neve helyett beíir valami komplett SQL utasítást
          INSERT INTO …
          GRANT…
          És hasonlók

          #2024621
          xcut
          Felhasználó

            én valahogy így oldottam meg, és elméletileg működik:

            Code:
            $needed_from_get=array( … );
            foreach($needed_from_get as $nfg){
                $nfg[‘value’]=isset($_GET[$nfg[‘get name’]])?$_GET[$nfg[‘get name’]]:$nfg[‘default’];
                if($nfg[‘numeric’])
                    $nfg[‘value’]=is_numeric($nfg[‘value’])?$nfg[‘value’]:$nfg[‘default’];
            }
            # ez megismételve meg 2x, a $_POST és a $_COOKIE tömbbel is

            Ezek előtt természetesen használok egy get_magic_quotes_gpc() ellenőzést is, és ha nincsen bekapcsolva, akkor mindhárom tömbön végigfuttatom az addslashes() fgv-t.
            Ennek elégnek kell lennie. Ha nem, akkor még az adatbáziskezelő modulodban minden beszúrt változóra használhatod a *sql_escape_string() függvényeket, bár szerintem ez felesleges, mert dupla backslash-elést csinálsz vele. A GRANT és az ilyesmikre való szűrés meg nem a legjobb ötlet, mert mi van ha a motort egy SQL-lel foglalkozó fórumra használják? Vagy mi van akkor, ha egy elvetemült textfile-ra így egy adatbázismotort? (feltéve, hogy kiadod a forrását)

            Az SQL inject különben csak ritkán működik, és nagyot kell bakizni hozzá.
            Egy motor írásakor a hangsúly inkább ott van, hogy ne tudjonak puffer túlcsordulást kihasználni, illetve, hogy ne tudják kijátszani a te általad írt jogrendszert (tehát admin jogosultságokat szerezni).

            #2024622
            MyCroft
            Felhasználó
              xcut wrote:
              Az SQL inject különben csak ritkán működik, és nagyot kell bakizni hozzá.
              Egy motor írásakor a hangsúly inkább ott van, hogy ne tudjonak puffer túlcsordulást kihasználni, illetve, hogy ne tudják kijátszani a te általad írt jogrendszert (tehát admin jogosultságokat szerezni).

              Puffer túlcsordulásra mik a tipikus bakik?
              A jogrendszerrel kapcsolatban afféle házibarkács megoldás van most, nemtudom mennyire jó, valszeg elég buher 🙂
              Nagyjából így néz ki, minden védeni kívánt oldal eleje:

              $_min_user_level = 5;
              require_once „auth_check.php”;

              Az auth_check.php pedig ezt tartalmazza:

              Code:
              = $_min_user_level)) {
                  ;
              }
              else {
                  Header(„Location: login.php?lang=”.$_GET[‘lang’].”&action=login”);   
              }
              ?>

              Tudom, hülyén van az if 🙂
              És persze register_globals = off

              #2024623
              xcut
              Felhasználó
                MyCroft wrote:
                Puffer túlcsordulásra mik a tipikus bakik?

                A jogrendszerrel kapcsolatban afféle házibarkács megoldás van most, nemtudom mennyire jó, valszeg elég buher 🙂
                Nagyjából így néz ki, minden védeni kívánt oldal eleje:

                … code …

                Tudom, hülyén van az if 🙂
                És persze register_globals = off

                1.) a puffer túlcsordulásra akkor alapoznak, ha a PHP-ben van hiba, és a te programod lehetőséget ad a kihasználására.
                2.) én komolyabban vettem a dolgot, a biztonsági rendszerem nagyjából az unixos modell és az iptables keveréke ^^ bővebben, ha kiadom az első publikus alpha-t.

                #2024624
                MyCroft
                Felhasználó
                  xcut wrote:
                  2.) én komolyabban vettem a dolgot, a biztonsági rendszerem nagyjából az unixos modell és az iptables keveréke ^^ bővebben, ha kiadom az első publikus alpha-t.

                  Valahogy sejtettem, hogy ennél csak komolyabb megoldás létezik 🙂
                  De ez egy konkrét progiban lesz, nem egy általános motor része, oda nyilván kifinomultabb megoldás kell. Itt csak annyit kell tudnia, hogy ne érhessen el bárki bármit. (felhasználók -> csoportok és a csoportoknak van biztonság szintje).
                  Így pl hírlevelet küldeni csak az tud, aki olyan csoportban (is) van, aminek a szintje legalább 5-ös.
                  Tehát a cél csak ennyi.

                  Igazából az lenne a kérdésem, hogy van-e benne vmi ordító hiba (akár a kódban, akár az elképzelésben), amit kihasználva vki kijátszhatja a hitelesítést.

                  #2024625
                  str2etboy
                  Felhasználó

                    Hali mindenkinek…

                    szerettem volna egy vizualis megerositest hasznalni egy formnal. Talaltam is egy jo cuccot. Captcha a neve, van belole pearl modul is, csak a baj, h az interware szerveren nincsen teleiptve. Szoval egyeb megoldashoz folyamodtam. Talaltam egy oldalt, ahol a sourcet le lehet tolteni es effektive ugy hasznalni, minth normalis pear modul lenne. Azomban az interware szerveren nem mukodik jol.
                    Csatoltam a kepet, h ti is lassatok, mi a bajom. A betuk egymasra vannak csuszva. Szerintetek ezt hogyan lehetne korrigalni. Minden mas szerveren tokre jol mukodott meg az ingyenes webhostokon is.
                    http://rtl-lapeercounty.org/test/captcha.html

                    Dani

                    #2024626
                    str2etboy
                    Felhasználó

                      Ok.. Nem tudtam kitalalni mi lehet a baj, de kitalaltam valami mast, amivel egy formot eleg jol lehet vedeni. Itt van a script:

                      Code:

                      Majd a formon belul valahol letrehozni egy szimpla text inputot user_code name attribbal es egy ahol az img.php a file, ami tartalmazza a fenti kodot.
                      Amikor elkuldod a formot anyit kell tenned, hogy megvizsgalod, hogy :

                      Code:
                      if(session_is_registered($_POST[‘user_code’])){ #lehet, hogy $_POST[‘user_code’] helyett csak $user_code ot kell #irnod. Ez a register_globals tol fugg
                      do whatever you want
                      session_unregister(„user_code”); #session torlese
                      }else{
                      error handling
                      }

                      Ha akarod akkor hozzaadhatsz valami session_timeout cuccost, ha megnagyobb biztonsagot akarsz. Ne felejtsd el torolni a sessiont!!

                      Ha a sessionokkel meggyult a bajod, mit nekem egy szerveren, akkor megteheted, hogy letrehozol egy konyvtarat linux szereveren 777 chmoddal vagy szimplan egy foldert windows serveren. Majd az img.php filet modositod, hogy hozzon letre egy $num nevu filet es a datumot, idot irja bele. Majd amikor teszteled a formot meg kell nezni, h a file letezik is file_exists functionnal es ha igen, akkor a datum, idopont nem kisebb mint a mostani – 15 perc. Majd torlod a filet.

                      #2024627
                      kayapo
                      Felhasználó

                        Készítettem egy számláló féleséget, ami egy ilyet valósít meg:
                        Csatolom a kódot, hátha mást is érdekel, ne felejtsd átnevezni zip-re  és kicsomagolni

                      10 bejegyzés megtekintése - 171-180 / 235
                      • Be kell jelentkezni a hozzászóláshoz.