Anti SQL Injection Function

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

  • Anti SQL Injection Function

    Mein letzter Thread wurde leider ins tote Tutorial Forum verschoben (danke!), wo ich nun keine Antwort mehr bekommen werde .

    Dann formuliere ich mal meine Frage anders.

    Da dieses Script hier ja anfällig auf SQL Injections ist, würde es mich interessieren ob es ausreichen würde, wenn ich es mit folgendem Code ergänze:

    PHP-Code:
    function my_real_escape_string($var)
    {
        if(
    get_magic_quotes_gpc())
        {
            
    $var stripslashes($var);
        }
    return 
    mysql_real_escape_string($var);
    }


    $username my_real_escape_string($_POST[username]);
    $userpass my_real_escape_string($_POST[userpass]); 
    Und dann halt dementsprechend überall wo $_POST['username'], $_POST['userpass'] im Script steht, mit $username und $userpass ersetzen.

  • #2
    Der Thread ist doch noch auf und er wurde gerade mal vor 3!! Stunden verschoben.

    Original geschrieben von jahlives
    Sorry aber da es nicht dein eigener Code ist sondern sich auf ein Tutorial bei uns bezieht gehört es für mich nach Tutorials
    Ich denke du kannst die gleiche Frage in jedem Forum posten und alles wird immer wieder gelöscht/verschoben.
    signed oder unsigned... das ist hier die Frage

    Kommentar


    • #3
      Also ich sehe kein konkretes PHP Problem, wie es für dieses Forum nötig wäre. Hier bist und bleibst du mit dieser Frage falsch.
      Was noch drinläge wäre Brainstorming, da du zu einer deiner PHP Funktionen Tipps willst (obwohl mir es absolut unsinnig erscheint eine eigene Fkt zu schreiben, für etwas was PHP schon bietet)
      Du willst Tipps was an deiner Fkt zu verbessern wäre? **move** nach Brainstorming
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Schade das hier Bürokratie vor Benutzerfeundlichkeit kommt

        Naja, ich zitiere aus der Überschrift von dem PHP Forum: "Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. " Das ist doch der Fall.

        Skriptproblem = SQL Injection anfällig
        Diskussion = Meine Lösung sicher?

        Dann muss ich jetzt wohl einfach warten...

        Kommentar


        • #5
          Such doch mal im Forum. Eben noch habe ich einen Link zu einem Script gepostet, dass sich mit genau deiner Problematik beschäftigt.

          Ansonsten wurde dir schon gesagt: Warum eine Funktion für etwas schreiben, das PHP auch kann?
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            Warum sollte deine Funktion reichen? Du überprüfst zum Beispiel nicht, ob die POST-Werte gesetzt sind. Die magic_quotes-Behandlung würde ich generell außerhalb der Funktion halten!
            Außerdem reagierst du auf alle Eingaben gleich: Konversion nach String. Aber bei einer ID oder etwas in die Richtung solltest du einen Cast nach Integer vornehmen!

            Kommentar


            • #7
              Original geschrieben von Londrag
              Naja, ich zitiere aus der Überschrift von dem PHP Forum: "Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. " Das ist doch der Fall.
              eben nicht ... nur hast du kein scriptproblem ... sondern willst mit-user um ihre meinung fragen und diskutieren.

              BRAINSTORMING PHP/SQL/HTML/JS/CSS
              Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen! [...]
              /ende
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Cool, einer meint die Funktion sei nicht annähern ausreichend, der andere meint eine Funktion sei überflüssig

                Original geschrieben von unset
                Ansonsten wurde dir schon gesagt: Warum eine Funktion für etwas schreiben, das PHP auch kann? [/B]
                Weil PHP es von Haus aus nicht korrekt macht. Wenn magic_quotes_gpc auf dem Server aktiviert, sollte zuerst stripslashes() auf die Daten angewendet werden. Das Bearbeiten bereits in irgend einer Form maskierter Daten durch mysql_real_escape_string führt ansonsten dazu, dass bereits Maskiertes doppelt maskiert wird, was wieder zu einer SQL Injection führen kann.

                So habe ich moch zumindest auf PHP.net und auch hier im Forum informiert.

                Wieso sollte die Anti SQL Injection Funktion überprüfen ob die $_POST Werte überhaupt gesetzt sind? Das wäre doch eher eine Sinnvolle Methode für das Login Script im allgemeinen, falls $_Post Username oder Password nicht gesetzt sind, erst gar nicht eine überprüfung der Daten vornehmen, sondern gleich ein return false ausgeben. Oder verstehe ich dich falsch?

                [..]in die Richtung solltest du einen Cast nach Integer vornehmen!
                Okay, das mich ich erst mal Googlen, habe nur Bahnhof verstanden

                Vorerst mal Danke auch beiden.

                @Abraxax
                Ist den eine SQL Injection kein Problem sondern nur eine Meinung? Egal, ich hoffe ich bekomme hier genügend Antworten, danke

                Kommentar


                • #9
                  Original geschrieben von Londrag
                  Cool, einer meint die Funktion sei nicht annähern ausreichend, der andere meint eine Funktion sei überflüssig
                  Ah, ich verstehe langsam. Du wirfst gerne Sachen durcheinander. Na gut, ich erkläre es dir gerne. Der eine sagt, das deine Funktion überflüssig ist, weil das was du erreichen willst PHP von Haus aus kann. Der andere sagt, dass der Weg wie du das was PHP von Haus aus kann erreichen willst absolut unzureichend ist!
                  [FONT="Helvetica"]twitter.com/unset[/FONT]

                  Shitstorm Podcast – Wöchentliches Auskotzen

                  Kommentar


                  • #10
                    Wieso sollte die Fkt das Vorhandensein der POST Werte prüfen müssen? Diese werden ja als Argument übergeben, sprich die Prüfung muss ausserhalb der Fkt stattfinden...
                    Die Fkt wäre auch etwas arg unflexibel wenn nur zwei bestimmte POST Felder akzeptiert würden. Für jedes neue Feld die Fkt anpassen wäre dann angesagt.
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von unset
                      Ah, ich verstehe langsam. Du wirfst gerne Sachen durcheinander. Na gut, ich erkläre es dir gerne. Der eine sagt, das deine Funktion überflüssig ist, weil das was du erreichen willst PHP von Haus aus kann. Der andere sagt, dass der Weg wie du das was PHP von Haus aus kann erreichen willst absolut unzureichend ist!
                      Also wenn du meinst dass PHP von Haus aus überprüfen kann, ob die Magic Quotes aktiviert sind, und dann entsprechend den my_real_escape_string Befehl ausführt, dann bitte nenne mir doch diesen Befehl.

                      Ich habe noch Beispiele gesehen bei der !is_numeric in der Funktion verwendet wird. Also falls der String nur aus Zahlen besteht, erst gar nicht my_real_escape_string ausführen. Jedoch Frage ich mich ob das wirklich sinn macht. Fühle mich irgendwie sicherer wenn einfach ALLES durch den "Schredder" gejagdt wird.
                      Zuletzt geändert von Londrag; 18.03.2008, 15:06.

                      Kommentar


                      • #12
                        Du könntest beispielsweise direkt zu Beginn prüfen, ob Magic Quotes aktiviert sind und ggf. ausschalten. Somit sparst du dir das ganze jedes einzelne mal abzufragen! Und allein das escapen schützt dich nicht zwingend vor einer SQL-Injection!

                        Ansonsten: Ich habe eben schon gesagt, dass ich etwas zu diesem Thema in einem anderen Thread geschrieben habe. Vielleicht bemühst du dich endlich mal darum dir das anzusehen statt hier den Sturkopf zu spielen.
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Ganz ruhig unset...Gus Fraba...Ich Sturkopf? Und das von jemanden der es bevorzugt über mehrere Beiträge hinweg in mehreren Sätzen schreibt, man solle seine ganzen Posts von Heute durchsuchen anstatt kurz die 11 Buchstaben php-ids.org zu schreiben. Immer diese Hypokraten Aber lassen wir diese streiterei nun.

                          Ich frag mich nun aber doch was umständlicher ist, in einer Funktion die Abfrage if(get_magic_quotes_gpc()) einbauen oder in der php.ini auf die man eventuell gar keinen Zugriff hat magic_quotes deaktiveren, oder alternative eine htaccess anlegen und es dort deaktiveren.

                          Ich wähle da doch lieber if(get_magic_quotes_gpc()). So bin ich von .htaccess und php.ini unabhängig.


                          Werde mir nun aber diese PHP IDS genau anschauen, danke.

                          Kommentar


                          • #14
                            Original geschrieben von Londrag
                            Ich frag mich nun aber doch was umständlicher ist, in einer Funktion die Abfrage if(get_magic_quotes_gpc()) einbauen oder in der php.ini auf die man eventuell gar keinen Zugriff hat magic_quotes deaktiveren, oder alternative eine htaccess anlegen und es dort deaktiveren.
                            Wer sagt, dass du in der ini rumschwurbeln sollst? Du kannst Konfigurationseinstellungen von PHP in großen Teilen zur Laufzeit vornehmen. Darunter auch das aktivieren und deaktivieren von Magic Quotes. Das bringt mich dann wieder zu einem früheren Post: Du wirfst gerne Sachen durcheinander. Vielleicht ist auch das der Grund warum ich dich dazu animiere dich selbst auf die Suche zu begeben und dir dahingehend Schlagworte liefere statt dir alles vorzukauen was du dann per C&P in dein Script übernimmst und wahrscheinlich noch als dein eigenes verkaufst!

                            Und nochmal: Lass doch einfach das Sturkopfgehabe. Du hast offensichtlich keine besonders große Ahnung - was auch nicht weiter schlimm ist. Aber evtl. solltest du deine eigene Überheblichkeit etwas zurückschrauben und auf das eingehen, was dir Leute mit offensichtlich wesentlich mehr Erfahrung raten! Und damit beziehe ich mich nicht auf mich!
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Schön was du mir hier alles an den Kopfschmeist....
                              - Ich bin ein Sturkopf
                              - Ich bringe alles durch einander
                              - Meine Scripts bestehen nur aus copy&paste
                              - Ich sei Überheblich
                              - Ich verkaufe vorgefertige script als mein eigen


                              Unset, aber sonst gehst dir noch gut? Langsam reicht es echt. Ich habe hier freundlich gefragt wie man das Tutorial von mrhappiness sicherer gestalten kann was die SQL Injection angeht.

                              Ich habe mich auch für die Vorschläge bedankt und auch meine Gedanken zu den Vorschlägen geschrieben. Du scheinst mich aber mit jeder deiner Antwort fertig machen zu müssen. Wäre dir dankbar wenn du entweder was Hilfreiches schreiben könntest, oder aber sonst mit deiner assozialen Haltung fern von diesem Thread bleibst. Danke dir.

                              Das man die magic_quotes auch ohne eine Änderung in der PHP.ini oder in der .htaccess deaktiveren kann, war mir nicht bewusst. Denn ich habe folgendes gefunden:
                              magic_quotes_gpc | changable: PHP_INI_PERDIR|PHP_INI_SYSTEM

                              ie. "Entry can be set in php.ini, .htaccess or httpd.conf" and not in
                              user scripts.
                              Zuletzt geändert von Londrag; 18.03.2008, 16:30.

                              Kommentar

                              Lädt...
                              X