Ankündigung

Einklappen
Keine Ankündigung bisher.

Sicherheit in PHP

Einklappen

Neue Werbung 2019

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

  • #16
    ähm ja und was hätte ein skript-kiddie davon wenn er das action-attribut ändert außer das er selbst sein eigenes javascript ausführt?

    Kommentar


    • #17
      Kommt darauf an.
      Wenn die Daten gespeichert werden, hat es schon etwas davon. Wer weiß, vielleicht wird es in Log-Files gespeichert, die der Admin später aufruft. In einem solchen Falle spricht man von XSS-Angriffen zweiter Ordnung.
      Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

      Kommentar


      • #18
        Wie sinnvoll... mal hallo sagen xD

        Kommentar


        • #19
          Oh, XSS ist nicht zu unterschätzen. Schnell kann auch CSRF draus werden.
          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

          Kommentar


          • #20
            Zitat von litterauspirna Beitrag anzeigen
            Häh? Was willst du mir grad damit sagen?
            Du sagtest, dass mysql_real_escape_string vollkommen ausreicht um sich vor SQL-Injection zu schützen. Dem ist aber nicht so - dafür das Beispiel....

            Übrigens auch die id kann man mit einem regex bearbetien [...]
            Oder einfach ein cast nach int...
            [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

            Kommentar


            • #21
              Ich meinte das ja auch als funktion davor! Den Rest macht ein regex als vorbeuge
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #22
                Gegen Injections (die ja nicht die einzige Gefahr darstellen) kann man sich auch durch (Objekt-)Modelle schützen, die Sprachelemente und Daten voneinander (ausreichend) trennen.
                Zum Beispiel SQL und PDO->prepare (genauso mysqli_prepare, pg_prepare, u.v.m.) mit positional/named parameters.
                PHP-Code:
                $stmt $pdo->prepare("INSERT INTO tablename (name, value) VALUES (:name, :value)");
                $stmt->bindParam(':name'$_POST['name']);
                $stmt->bindParam(':value'$_POST['value']);
                $stmt->execute(); 
                Zum Beispiel HTML und DOM
                PHP-Code:
                $userinput // $_POST['text']
                 
                '<script type="text/javascript">alert("xss")</script>';
                // ...
                $div $body->appendChild($dom->createElement('div'$userinput));
                // if ($div===false) ...
                echo $dom->savexml(); 
                Zehrt etwas an der Performance, man muss sich in mehr API als nur Stringmanipulation einlesen und die Einstiegshürde ist höher. Aber dafür sind "wusste ich nicht"-, Faulheits- oder Flüchtigkeitsfehler wesentlich "schwieriger".

                Kommentar


                • #23
                  mal vielen dank an alle... ist doch ein thema das die meisten beschäftigt. aber nun kann ich doch schon einiges für die sicherheit einbauen.... Ein RTestrisiko bleibt wohl immer.

                  Wie schaut es mit den Sessions aus? muss man da auch was machen? ich habe irgendwo im forum hier gelsesn dass man diese auch in die db speichern soll zum USER...
                  Damit kein Multilogin möglich sein.

                  Wie ist das zu verstehen wie macht man es und was muss man sonst noch bei sessions beachten

                  Kommentar


                  • #24
                    Die eigentlichen Sessiondaten werden nicht zum Client übertragen. Aber die Session_id muss hin und her übertragen werden. Die Session-Id ist eine Art Kurzzeitpasswort und muss daher geschützt werden (und wenn möglich auf eine IP Adresse beschränkt werden). Wie die Session-Id übertragen wird, ist im Prinzip unwichtig. Sie muss nur einmal vom Server zum Client und bei allen folgenden Requests vom Client zum Server übertragen werden. PHP unterstützt die Übertragung per Cookie und per URL.

                    Session-Ids per URL zu übergeben hat den Nachteil, dass Benutzer die Session "weggeben" können, copy&paste der Addresszeile des Browsers und das war's. Zum Beispiel in einer Firma mit Router/NAT nutzt dann auch die Beschränkung auf eine IP nicht mehr viel. Cookies sind daher vorzuziehen. Und dem Benutzer sollte immer die Möglichkeit gegeben werden, die Session sicher zu beenden, Session-Daten verwerfen, Session-Id verwerfen, Cookie löschen.
                    Wenn Du eine neue Session startest (einen Nutzer einer neuen Session zuweist) solltest Du immer eine neue Session-id generieren lassen.
                    Sonst kann man zum Beispiel einem Benutzer einen vorgefertigten Link mit einer ausgewählten Session-Id zuschicken, PHP übernimmt diese Id, der Benutzer meldet sich an und der Angreifer - da er die Id kennt - kann die Session übernehmen. Deshalb immer neue Session/neuer Benutzer->session_regenerate_id().

                    Kommentar


                    • #25
                      wie soll man den $_SESSION ändern``??

                      höchstens auslese aber erstellen und ändern geht doch nicht

                      Kommentar


                      • #26
                        dann wäre das hier falsch?

                        PHP-Code:
                        $sql "SELECT ".  
                            
                        "id, benutzername, name, name_homepage ".  
                          
                        "FROM ".  
                            
                        "homepage_userdaten ".  
                          
                        "WHERE ".  
                            
                        "(benutzername like '".$_REQUEST["name"]."') AND ".  
                            
                        "(password = '".md5 ($_REQUEST["pwd"])."')";  
                        $result mysql_query ($sql);  

                        if (
                        mysql_num_rows ($result) > 0)  
                        {  
                          
                        // Benutzerdaten in ein Array auslesen.  
                          
                        $data mysql_fetch_array ($result);  

                          
                        // Sessionvariablen erstellen und registrieren  
                          
                        $_SESSION["homepage_id"] = $data["id"];  
                          
                        $_SESSION["homepage_benutzername"] = $data["benutzername"];  
                          
                        $_SESSION["homepage_name"] = $data["name"]; 
                          
                        $_SESSION["name_homepage"] = $data["name_homepage"];  

                          
                        header ("Location: homepage_index_user.php");  
                        }  
                        else  
                        {  
                          
                        header ("Location: homepage-login.php?fehler=1");  

                        Kommentar


                        • #27
                          das ist schon okay wenn du $_REQUEST["name"] sicherst das mit man keine mysql angriffe machen kann

                          Kommentar


                          • #28
                            Zitat von Dominik Beitrag anzeigen
                            das ist schon okay wenn du $_REQUEST["name"] sicherst das mit man keine mysql angriffe machen kann
                            ich meinte wegend en $_SESSION

                            Kommentar


                            • #29
                              ja ist doch okay kannst natürlich die werte in session speichern dazu sind sie ja da,.....


                              mfg

                              Kommentar


                              • #30
                                meine frage ob das so falsch ist ist ja auf den beitrag von David gerichtet

                                PHP-Code:
                                $name mysql_real_escape_string(strip_tags($_POST["name"])); 
                                            
                                $email mysql_real_escape_string(strip_tags($_POST["email"]));    
                                            
                                $kategorie mysql_real_escape_string(strip_tags($_GET["kategorie"]));
                                            
                                            if(
                                strlen($_REQUEST['name']) > && strlen($_REQUEST['email']) > 0)
                                               {
                                            
                                $eintragen "INSERT INTO newsletter
                                                (name, email , kategorie)
                                                VALUES
                                                ('
                                $name', '$email', '$kategorie')";

                                            
                                $eintragen mysql_query($eintragen) or die(mysql_error()); 
                                Reicht das so oder muss ich da bei $_Request auch noch ein mysql_real_escape_string(strip_tags( einfügen?


                                und wie schaut es m it $_FILES aus muss man da auch noch was machen?

                                Kommentar

                                Lädt...
                                X