Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP funktion gegen SQL-Injection

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP funktion gegen SQL-Injection

    Hallo.

    habe mal ne funktion geschrieben.

    PHP-Code:
    function sql_protect($eingabe
    {
    //Überflüssige Maskierungen aus der übergebenen Variablen entfernen
    if(get_magic_quotes_gpc()) 
    {
    $eingabe stripslashes($eingabe);
    }
    $eingabe mysql_real_escape_string($eingabe);
    return 
    $eingabe;

    Bin mir nur nicht sicher ab diese Ausreichend gegen SQL-Injection ist.

    Vielleicht habt Ihr noch paar Tips was man besser machen könnte oder was gar Falsch ist.

    Grüße Hase

  • #2
    Falsch ist bspw. dass mysql_real_escape_string immer abhängig von der verwendeten Datenbankverbindung benutzt werden sollte.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Also mysql_real_escape_string immer direkt in die Abfrage schreiben.

      Was ist noch falsch...? jemand der ne community macht meinte das geht so

      Kommentar


      • #4
        Wenn eine DB Verbindung besteht dann funktioniert das auch so. Allerdings wäre es eben besser wenn du noch den DB Link mit an die Funktion übergibst damit mysql_real_escape_string() genau diese Verbindung nutzt.

        Ansonsten sollte das soweit passen.

        Kommentar


        • #5
          Zitat von Flor1an Beitrag anzeigen
          Wenn eine DB Verbindung besteht dann funktioniert das auch so. Allerdings wäre es eben besser wenn du noch den DB Link mit an die Funktion übergibst damit mysql_real_escape_string() genau diese Verbindung nutzt.

          Ansonsten sollte das soweit passen.

          dazu möchte auch jede abfrage gleich heißen..also beispiel $sql...anstatt eine $sql und eine $sqlabfrage usw

          Kommentar


          • #6
            Ich hab keine Ahnung was du mit dem Satz meinst.

            Kommentar


            • #7
              Du kannst auch einfach prepared statements verwenden und die ganze injections Thematik hinter Dir lassen.

              Kommentar


              • #8
                naja ich denke mal mit DB link meinst du die abfrage zum beispiel $sql heißt,

                wenn ich nun in $sql mit an die funktion übergebe aber eine abfrage mal nicht $sql heißt würde die funktion nicht klappen...

                (kann natürlich sein das ich dich miss verstanden haben )

                Kommentar


                • #9
                  Zitat von 22hase
                  wenn ich nun in $sql mit an die funktion übergebe aber eine abfrage mal nicht $sql heißt würde die funktion nicht klappen...
                  Der Name des Funktionsparameters ist unabhängig vom übergebenen Wert.
                  PHP-Code:
                  function foo($bar) {
                    echo 
                  $bar;
                  }

                  $x 'abc'
                  $y '123'
                  foo($x);
                  foo($y); 

                  Kommentar


                  • #10
                    @david

                    meinst du sowas in der art..

                    PHP-Code:
                    function sqlprotect ($sql
                    {
                    $boese = array(""," "," ","","","Œ","™","˜");
                    $gut = array(""," "," ","x1a","x9d","x9c","x99","x98" );
                    $sql stripslashes($sql);
                    $sqlclean str_replace($boese$gut$sql);
                    $sqlclean addslashes($sqlclean);
                    return 
                    $sqlclean;

                    Kommentar


                    • #11
                      Und du sollst die Verbindungskennung an mysql_real_escape_string() übergeben so wie es im Manual steht.

                      Kommentar


                      • #12
                        PHP: mysql_real_escape_string - Manual

                        meinst das beispiel 3, richtig

                        Kommentar


                        • #13
                          Zitat von 22hase Beitrag anzeigen
                          @david

                          meinst du sowas in der art..
                          Nein, ich meine: verwende prepared statements

                          Und dass Du da irgendwo mit strip_slashes, str_replace o.ä. arbeiten sollst, meine ich ganz sicher nicht.

                          Kommentar


                          • #14
                            Mittels Prepared Statements können SQL-Injections effektiv verhindert werden
                            das hört sich gut an

                            aber bei letztendlich mehreren varianten die es da gibt, welche ist bietet da wirklich den besten schutz? denn wenn dann sollte man sicher nur einer der varianten nehmen

                            Kommentar


                            • #15
                              welche "mehreren varianten" meinst Du denn?

                              Kommentar

                              Lädt...
                              X