Sicheres PHP

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

  • Sicheres PHP

    Hallo!

    Ich suche seit langen ein Tutorial oder zumindest Funktionen, die ein sicheres Filtern von Benutzereingaben gewährleisten. Sowas wie mysql_real_escape_string. Oder bei ?seite=xy include($_GET['xy'].".php"); Diese riesigen löcher stopfen ...

    Ich weiß, dass man da mit switch, if und so arbeiten kann .. aber gibts da nicht ne andere Methode?

    Und wie sicher ist myql_real_escape_string? Eingegebene Werte casten nach den Datentypen wie ich sie haben will / erwarte, wenn ich ne id per GET anforere sie als INT zu casten, ist mir mittlerweile auch klar.

    Dafür aber suche ich ein Tutorial, wenn es sowas gibt...? Hab bei google bereits nach PHP Sicherheit etc gesucht ... Vllt wisst ihr Profis ja ne Menge.

    Abgesehen davon wüsste ich gerne mal wo ihr PHP gelernt habe, ob ihr es professionell gelernt habt und wenn,wo man es professionell lernen könnte.
    Liebe Grüße,
    SteKoe!

    PHP Tutorials
    Peter Kropff | Quakenet | Schattenbaum.net

  • #2
    Ich suche seit langen ein Tutorial oder zumindest Funktionen, die ein sicheres Filtern von Benutzereingaben gewährleisten.
    "sicherheit" ist immer kontextabhängig. was soll wo (und wogegen) sicher sein?

    Kommentar


    • #3
      Danke für die Frage

      Sicherheit bei Usereingaben. Einerseits ... andererseits dann weiter mysql_injections verhindern .. bei GET Übergebenen Variablen
      Liebe Grüße,
      SteKoe!

      PHP Tutorials
      Peter Kropff | Quakenet | Schattenbaum.net

      Kommentar


      • #4
        und gibt es irgendein sicherheitsbedenken, von dem du nicht sicher bist, ob du dagegen etwas unternehmen kannst?

        Kommentar


        • #5
          PHP5 und größer bietet eine Input-Filter-Extension, mit der du arbeiten könntest. Bei Interesse kannst du mehr dazu hier lesen.
          Davon abgesehen ist es eigentlich nicht besonders kompliziert, sich selbst um die User-Eingaben zu kümmern. Du solltest stets überprüfen, ob es sich bei den eigegebenen Daten auch um Formate handelt, die du bzw. dein Skript erwartet. Stichwort type-casting bspw.

          Sicherheit beinhaltet ein breites Spektrum an Dingen, die man beachten sollte. Insofern ist es nicht leicht, ohne konkreten Kontext Konkretes zu sagen - abgesehen von grundlegenden Dingen. Um die Sicherheit dynamischer Includes z.B. musst du dich selbst kümmern, das nimmt dir keine Extension und keine Extra-Funktion ab. Da gilt es zu überprüfen, ob der übergebene Parameter zu einer externen Quelle verweist oder nicht in einer von dir vordefinierten Liste erwarteter Aktionen aufgeführt wird. Ähnlich musst du auch an andere Problematiken rangehen.

          Hier mal ein paar Sicherheit-bezogene Links, die dir helfen werden:
          PHP Online Doku - Sicherheit
          PHP-FAQ Sicherheit

          Sicheres PHP-Programmieren für Einsteiger von O'Reilly
          (zu empfehlen)

          Stichworte zum Googlen: SQL-Injection, XSS (Cross-Site-Scripting)

          Zu deiner letzten Frage: Ich habe PHP größtenteils mit dem Online Handbuch und einigen Tutorial-Seiten gelernt. Bei letzteren gibt es leider auch etliche nicht empfehlenswerte... Kropff hat bspw. eine meiner Meinung nach sehr gute Seite für unter anderem PHP-Tutorials online gebracht. www.peterkropff.de
          Ich gehöre hier aber keineswegs zu den PHP-Profis, ich mache das Hobbie-mäßig und bin auch da nicht herausragend.
          Nieder mit der Camel Case-Konvention

          Kommentar


          • #6
            Original geschrieben von penizillin
            und gibt es irgendein sicherheitsbedenken, von dem du nicht sicher bist, ob du dagegen etwas unternehmen kannst?
            Sagen wir es mal so: Meine Seite wurde heute "gehacked". Weil ich bekloppterweise einfach blind include($_GET['site'].".php"); ikludiert habe ... Seit dem bin ich total demotiviert und auch etwas bedenklich, was meine Programmierweise angeht...
            Liebe Grüße,
            SteKoe!

            PHP Tutorials
            Peter Kropff | Quakenet | Schattenbaum.net

            Kommentar


            • #7
              Um zu wissen, wo man Einbrechen kann, bzw diese Stellen zu finden, musst du eben denken wie ein Einbrecher. Wenn die Begriffe wie SQL-Injections, Cross-Site-Scripting, Upload-Attacks etc nichts sagen, hast du hier ein Defizit. Google mal nach den Begriffen, such dir mal mit entsprechenden Schlüsselwörtern Artikel im Netz. Treib dich auch ruhig mal auf "schmuddeligen" Seiten rum, wo Exploits angepboten werden. Eine gute Mailingliste ist zum Beispiel Full Disclosure. Lesen, lesen, lesen. Irgendwann schlägst du die Hände überm Kopf zusammen und erkennst alles auf den ersten Blick.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Original geschrieben von unset
                [...] Irgendwann schlägst du die Hände überm Kopf zusammen und erkennst alles auf den ersten Blick.
                Und merke, dass man das alles bei mir machen kann

                Ich bin euch dankbar für die Schlagwörter soweit!
                Liebe Grüße,
                SteKoe!

                PHP Tutorials
                Peter Kropff | Quakenet | Schattenbaum.net

                Kommentar


                • #9
                  etwas schmerzhafter lernprozess, aber diesen fehler wirst du wohl nie wieder begehen...

                  grundsätzlich sollte man dafür sorgen, dass die eingabe des benutzers immer nur als daten behandelt wird und an den stellen, an denen sie zur kontrolle des programmflusses notwendig ist (wie z.b. dieses "seite=..." in der url) nur mit erwarteten werten weitergearbeitet wird. mehr dazu steht im post meines vorredners.

                  Kommentar


                  • #10
                    Original geschrieben von unset
                    ... Upload-Attacks ...
                    könttest du diesen begriff vielleicht in paar worten umreißen?

                    Kommentar


                    • #11
                      autsch .. habe gerade mit meinem Script rumprobiert ... habe zugriff auf die passwd datei und kann sie auslesen Oo
                      Liebe Grüße,
                      SteKoe!

                      PHP Tutorials
                      Peter Kropff | Quakenet | Schattenbaum.net

                      Kommentar


                      • #12
                        Original geschrieben von penizillin
                        könttest du diesen begriff vielleicht in paar worten umreißen?
                        Klar. Wenn du zum Beispiel ein PHP-Script mit der Dateieindung jpg versiehst und zum Beispiel als Avatar hochlädst, hast du schonmal erfolgreich Code auf den Server gebracht. Der Mime-Type wird auch als JPG angegeben. Das zum Ausführen zu bekommen ist dann idR nur noch ein Kinderspiel.
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          ach so...
                          Das zum Ausführen zu bekommen ist dann idR nur noch ein Kinderspiel.
                          aber genau darin besteht die schwierigkeit, oder? denn das erfordert das vorhandensein anderer sicherheitslücken. die tatsache, dass auf dem server eine datei mit bösem inhalt liegt, ist nur die halbe miete und ist u.u. harmlos (vorausgesetzt u.a. guter system administrator). wo wir wieder beim thema wären:
                          autsch .. habe gerade mit meinem Script rumprobiert ... habe zugriff auf die passwd datei und kann sie auslesen Oo
                          wie das? warum darf der apache so viel?

                          Kommentar


                          • #14
                            Original geschrieben von penizillin
                            denn das erfordert das vorhandensein anderer sicherheitslücken. die tatsache, dass auf dem server eine datei mit bösem inhalt liegt, ist nur die halbe miete und ist u.u. harmlos
                            Das ist Richtig. Aber jeder Einbruch basiert auf einer Verkettung von Sicherheitslücken.
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar


                            • #15
                              Original geschrieben von penizillin
                              wie das? warum darf der apache so viel?
                              kA .. es geht .. vllt sollte ich dem Hoster mal Bescheid geben?! .. Das ätzt mich so an ... weil ich mir zu sicher war gute Seiten zus chreiben .. und dann so ein Müll *grummel* Aus Fehlern lernt man .. ich danke euch, werde mich durchbeißen und dann immer auf solche Lücken testen... ist ja ätzend.

                              PHP-Code:
                              $site $_GET['site'];

                              if(empty(
                              $site) || !isset($site))
                              {
                                  include(
                              "source/main.php");
                              }
                              elseif(!
                              file_exists($site.".php"))
                              {
                                  
                              header("Location: error.htm?errorcode=404");
                              }
                              else 
                              {
                                  include(
                              $site.".php");

                              das lässt das ganze nicht mehr zu, wenn ich "?site=../../../../passwd%00" aufrufe ... warum?
                              Zuletzt geändert von stekoe2000; 28.02.2007, 21:27.
                              Liebe Grüße,
                              SteKoe!

                              PHP Tutorials
                              Peter Kropff | Quakenet | Schattenbaum.net

                              Kommentar

                              Lädt...
                              X