Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Sicherheit

Einklappen

Neue Werbung 2019

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

  • PHP Sicherheit

    Hallo,

    ich habe mich gestern mit einem Informatik Studenten unterhalten. Dem habe ich von einem kleinen Projekt von mir erzählt und dass ich dieses mit PHP & MySQL realisiere. Er wollte dann wissen welche Version ich von PHP nutze und meinte dann, dass PHP alles andere als sicher sei.
    Stimmt das?
    Es soll wohl einen parameter sowie eine dazugehörige Variable geben, mit der man den PHP-Quelltext geliefert bekommt, anstatt den HTML Code.

    Stimmt das und wenn ja, wie kann ich generell die Sicherheit mit PHP verbessern?

    Gruß
    Thomas

  • #2
    Das ist keine Variable, sondern eine Funktion. Und die ist eigentlich nur zu Debugzwecken da, bzw. dazu, Scripte zu präsentieren.
    Und das kann nur der programmierer selbst fabrizieren, das geht garantiert nicht über einen zugriff von außen. Für Uralt PHP Versionen kann ich natürlich nicht sprechen, aber SO ein Problem wurde garantiert schon ganz früh ausgeschaltet.
    Die typischen Themen, auf die man trotzdem achten sollte:

    -SQL-Injection
    -XSS (bei Javascript-Einsatz)
    -Cookies ggf. verschlüsseln
    -Session gegenchecken und gegen übernahme schützen
    -register globals = off
    -Benutzereingaben prüfen
    -aufpassen bei dynamischen/ userdefinierten includes

    mehr fällt mir gerade nicht ein.

    Kommentar


    • #3
      Super - danke für die schnelle antwort.
      Aber mal ganz doof gefragt:

      -SQL-Injection
      Wie geschieht so eine SQL-Injection?

      -XSS (bei Javascript-Einsatz)
      Bei kleinen "normalen" JavaScript Funktionen sollte das doch kein Problem sein, oder?

      -Session gegenchecken und gegen übernahme schützen
      Wie kann man Sessions übernehmen bzw. gegenchecken

      -aufpassen bei dynamischen/ userdefinierten includes
      Dad gib it bei mir nit

      Kommentar


      • #4
        1. Wenn Eingaben von Nutzern ungeprüft in eine SQL-Anweisung übernommen werden. Dann ist es möglich zusätzlich zu den vermeintlich korrekten Daten, die in die Anweisung eingefügt werden soll, weitere Anweisungen anzuhängen, die dann eben auch böse Sachen machen dürfen

        3. Indem man ganz banal die Session-ID herausfindet/klaut Das ist etwas, was du als Programmierer schlecht bis garnicht kontrollieren kannst. Gegenchecken würd ich das mit möglichst vielen Möglichkeiten, die dir als "Ausweismerkmale" zur Verfügung stehen. ZB mit der IP, dem User-Agent, etc. Das bringt aber auch gleichzeitig eben auch Nachteile mit.

        Würde so als Fazit behaupten, dass PHP genauso sicher oder unsicher ist wie jede andere Programmiersprache auch. Sie ist allerdings, weil sie eine Sprache für Websites ist, ständig im Kreuzfeuer diverser Angriffe
        Nicht jeder Fehler ist ein Bug.

        Kommentar


        • #5
          wie kann man denn eine Session ID klauen?

          Kommentar


          • #6
            Zum Beispiel: Diese Seite (ich hab sie grad per Google gefunden, also klaut mir die Session ruhig, habt ihr nix von ) hat die SID direkt im Link. Schicke ich nun als unachtsamer Nutzer diesen Link so wie er ist, an einen Freund, surft dieser auf eben dieser Seite mit meiner SID, vorrausgesetzt die Seite prüft die Authenzität nicht noch selber.
            Andere Seiten (wie dieses Forum hier) setzen die SID in Cookies. Die kann man sich aber auch sehr leicht mal kopieren, wenn man schon mal dran sitzt, oder unterwegs irgendwo abfangen. Ist aber schon auffällig schwieriger, als der Diebstahl per URL, insofern schon ein Schritt in die richtige Richtung.
            Es gibt ne Menge Möglichkeiten, aber alle haben eines gemeinsam: Ein böser Bub kennt deine SID. Mehr braucht man dazu nicht

            Fakt ist (das ist eine Aussage meines alten Informatik-Lehrers): Alle Daten, die von aussen kommen, sind erstmal böse, nicht vertrauenswürdig und müssen geprüft werden! Dieser Merksatz gilt aber nicht nur für PHP, sondern eigentlich für alle Programme/Programmiersprachen, bei denen am Schluss 2 oder mehr Systeme miteinander kommunizieren.
            Nicht jeder Fehler ist ein Bug.

            Kommentar


            • #7
              Ich übergebe meine Sessions aber nicht über URL.
              Ich mache das über die $_SESSION['name'] Funktionen...
              Sind die auch unsicher?

              Kommentar


              • #8
                *hust* Das sind Äpfel und Birnen! ^^
                Also, wie funktioniert eigentlich eine Session? Wenn man eine Session startet, dann richtet PHP einen persistenten Speicherbereich ein (üblicherweise eine Datei), in dem es die ganzen Daten ablegt. Zu eben dieser Datei generiert er eine ID, die er dem Nutzer übergibt. Wenn der Nutzer nun auf den nächsten Link klickt, übergibt er wieder die ID zurück an PHP, der anhand dieses den passenden Speicher findet und die Daten in die $_SESSION-Variable verteilt.
                PHP brauch also auf jeden Fall irgendeinen Anhaltspunkt, damit er weiß "Aha, Daten x gehören also zu User y". Diesen Anhaltspunkt kann er selbst nicht liefern, weil alles, was er selbst vom Nutzer weiß, zu veränderlich sind, als das man sich darauf verlassen kann. Bleibt nur noch eine eindeutige Kennung und das ist eben die ID.

                Mal anschaulich: Stell dir vor, du gehst in ein Atomkraftwerk. Dort werden am Anfang deine Daten entgegen genommen (Name, Geburtstag, ..) und du bekommst ein kleines Anhängeschild mit Barcode. Jetzt begegnet dich ein Sicherheitsmann und scannt dein Barcode. Aha, das bist also du! Jetzt stell dir vor, jemand klaut dir dein Anhängeschild, legt es unter den Kopierer und gibt es dir wieder zurück. Du bekommst davon natürlich garnix mit Und nun sprengt er das Atomkraftwerk. Tja, hinterher findet man dein Anhängeschild lustig verstrahlt mitten neben der Bombe, also musst du der Angreifer wohl gewesen sein
                Nicht jeder Fehler ist ein Bug.

                Kommentar


                • #9
                  Hallo Plague,

                  zu diesem Thema gibt es sehr gute Literatur, die sich auch in meinem Besitz befindet.

                  Dort werden solche Probleme in Beispielen abgehandelt und mögliche Gefahren aufgezeigt. Am Ende jedes Kapitel gibt es einen Lösungsvorschlag, um solche Probleme zumindest ansatzweise zu unterbinden.

                  Ich denke mal, gegen große kriminelle Energien hat man keine 100% Chance.

                  Ich selber habe übrigens mit Hilfe des Buches eine Menge Sicherheitslücken gestopft. Man glaubt nicht, welche Möglichkeiten es gibt, eine Website zu "Knacken".

                  Titel: PHP_Sicherheit
                  Autoren: Christopher Kunz, Peter Prochaska
                  Verlag: dpunkt.verlag
                  ISBN: 3-89864-369-7

                  Gruß

                  Merlin der Zauberer
                  www.Sternenwelt.net - Astronomie im Internet -
                  www.SternenweltForum.net - Antworten rund um die Astronomie -

                  Kommentar


                  • #10
                    zu deinem 2. Punkt: Es geht nicht um die JS Funktionen die du selber in die Page einbaust sondern darum dass wenn du z.B. ein Textfeld (Gästebuchtext) in der DB speicherst ohne davor/danach den Text zu überprüfen ... dann kann ein User in den Text einfach einen JS-Skript reinschrieben. Wird der Eintrag ausgelesen und einem anderen User angezeigt wird dieses Skript ausgeführt und kann z.b. zu Sessionklau führen. Bzw. Phishing wäre da auch ein Begriff.

                    Kommentar


                    • #11
                      Hier gibts ein Probekapitel aus PHP Sicherheit zum Thema Sessions. Da findest Du auch was über Session Hijacking...
                      [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


                      • #12
                        Hi.
                        Ich bin eben auch gerade an dem Thema Sessions und Sicherheit und bin irgendwo ( ich weiß nicht mehr wo, weil ich eigentlich was anderes suchte^^ ) über "Fingerprints" gestolpert. Das ist wohl ein Hashwert der aus der SID, der "Browserkennung" und z.B. dem Passwort mit dem sich der User der die Session hat angemeldet hat gebildet wird. Ich habe mir gesetrn dir Finger wund gesucht, aber nichts mehr zu dem Thema gefunden. Kann mir jemand sagen ( oder eine Quelle nennen ) was genau diese Fingerprints sind, wie sie gebildet und eingesetzt werden?
                        Thx schon mal
                        Canni
                        Zwei Sachen verstehe ich einfach nicht: Frauen und warum Klopapierrollen immer so aufgehängt werden, daß man sie zur Wand hin abrollen muß...

                        Kommentar


                        • #13
                          Zitat von Canni
                          Ich habe mir gesetrn dir Finger wund gesucht, aber nichts mehr zu dem Thema gefunden.
                          Also ehrlich, etwas weniger Pathos bitte.
                          http://en.wikipedia.org/wiki/Public_key_fingerprint

                          Den Browser oder die IP als Identifizierungsmerkmal zu verwenden wurde hier schon oft diskutiert. Hast Du mal die Forensuche benutzt und Dir ein paar Threads zum Thema durchgelesen? Da sollte einiges zu finden sein.
                          [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


                          • #14
                            Hab hier ehrlich gesagt nur nach dem Schlagwort gesucht und nur ->

                            Sessiondauer erhöhen
                            md5 - string weiterverwenden
                            Komplettes AJAX-basiertes Shop-System olCommerce/AJAX
                            Datenschutz und Sessions
                            PHP Sicherheit

                            gefunden.

                            Die hab ich mir zur Gemüte geführt und auch die Querverweise. Hat mich leider nicht schlauer gemacht. Ok: schlauer suchen => schlauer finden.
                            Auch per Google konnte ich mir "fingerprint" nicht wirklich Wissen erhaschen.

                            Aber Danke für den Link. Werd mir das mal anschauen.
                            Zwei Sachen verstehe ich einfach nicht: Frauen und warum Klopapierrollen immer so aufgehängt werden, daß man sie zur Wand hin abrollen muß...

                            Kommentar

                            Lädt...
                            X