[PHP] Sicherheitslücke bei Sucheingaben (php)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von splashed, 6. November 2010 .

Schlagworte:
  1. 6. November 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Sicherheitslücke bei Sucheingaben (php)

    Welche Gefahren lauern, wenn die Antwortseite einer Suche (php) den Code wieder ausgibt:
    Eingabe: "<img src="https://www.xup.in/exec/ximg.php?fid=26807155">
    Ihre suche nach "<img src="https://www.xup.in/exec/ximg.php?fid=26807155"> war nicht erfolgreich BZW
    Ihre Suche nach {bild-down: https://www.xup.in/exec/ximg.php?fid=26807155}
    war nicht erfolgreich.

    Kann hier PHP-Code eingeschleust werden? Wenn ja, wie?
    Wie kann man das verhinder
     
  2. 6. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    Das nennt man XSS und es kann nur JavaScript / HTML-Code eingeschleust werden (wobei ich dein Script nicht kenne.)

    Man kann der Sache vorbeugen indem man die Eingabe filtert.

    Cross-Site-Scripting – Wikipedia
     
  3. 6. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    Wenn du das $_GET['q'] gegenn htmlentities($_GET['q']) austauscht, dann sollte so etwas nicht möglich sein.
     
  4. 6. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    es sei denn deine suche eval'd irgendwas aus den suchparametern, aber dann bist du wirklich selbst schuld.

    die gänigste methode php-code auf deinem server auszuführen ist die, php-code durch einen fehlerhaften request in deine access-logs oder environ zu schreiben und anschließend über einen LFI auszuführen.

    über XSS kann deinem server selbst erstmal nichts passieren, aber man kann den benutzern cookies klauen, bei login-formularen zugangsdaten klauen (wenn sich der benutzer über einen bearbeiteten link einloggt) und sonstigen unfug auf deiner seite platzieren den du ggf. nicht dort haben willst.

    umgehen kannst du solche sachen, indem du bei der ausgabe "Ihre suche nach "xyz" war nicht erfolgreich" html-code entfernst/bearbeitest.

    PHP: htmlentities - Manual
    PHP: strip_tags - Manual
     
  5. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    HTML:
    <form name="test" action="test.php" method="post">
     <strong>Eingabe: </strong></font><input type="text" name="test" /></font>
     <input type="submit" value="senden" name="button" /></font>
    </form> 
    wie kann man dieses Formular sicherer machen?
     
  6. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    zeig lieber die test.php...

    btw: murdoc & co. kg habens doch schon gesagt
     
  7. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    bei der auswertung im php formular, wie schon beschrieben
    htmlentities($_POST['test']) oder strip_tags($_POST['test'])

    kann ja auch sein, dass du eine datenbank nach dem eintrag durchsuchst, wenn das so ist, könnte man ohne sicherheitsabfragen auch gerne mal mysql injections bekommen. dafür könntest du dir mal mysql_real_escape_string angucken
     
  8. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    Das erklärt dir doch schon alles eigentlich?

    Am leichtesten mit wenig Schreibarbeit, du machst einfach eine foreach Schleife und wie b-xXx gesagt hat, wendest du Murdocs Tipps an. Kannst natürlich auch alles per Hand definieren ist eigentlich egal.


    Edit:// Was soll der schließende Font-Tag in deinem Formular?
     
  9. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    danke erstmal...
    in der test.php schaut ungefähr so aus:
    $test = $_POST ["test"];
    weitere verwendung($test);


    wie mache ich das mit htmlentities($_POST['test'])?
    Hier sollen werden die htmlentities kritisiert:
    SELFHTML Forumsarchiv / 2006 / Juni / reicht HTMLENTITIES?
    Wie kann ich noch sicher machen?
     
  10. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    Jung, wofür gibts denn die Doku? ^^

    Beispiel #1 Ein htmlentities()-Beispiel
    PHP:
    <? php
    $str 
    "Ein 'Anführungszeichen' ist <b>fett</b>" ;
    // Gibt aus: Ein 'Anf&uuml;hrungszeichen' ist &lt;b&gt;fett&lt;/b&gt;
    echo  htmlentities ( $str );

    // Gibt aus: Ein 'Anf&uuml;hrungszeichen' ist &lt;b&gt;fett&lt;/b&gt;
    echo  htmlentities ( $str ENT_QUOTES );
    ?>
    Dort geht es um MySQL Selectes und Inserts. Willst du mit deinen Formularwerten etwas in eine Datenbank schreiben oder mit Werten aus dem Formular eine Datenbankabfrage machen solltest du mysql_real_escape_string zusätzlich benutzen.
     
  11. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    PHP:
    $test  $_POST  [ "test" ];
    weitere verwendung ( $test );
    Ich bin überwältigt von der Komplexität.


    Was sollen wir dir denn jetzt für eine Antwort darauf liefern? Alles was wir wissen ist:
    1. Du verwendest PHP
    2. Die Eingaben erfolgen über ein HTML-Formular
    3. Du gibst Daten innerhalb des HTML-Dokuments aus
    Das einzige, was die Sicherheit deiner Anwendung relevant sein könnte, ist Punkt 3. Und dazu hast du hier schon ne Menge Antworten erhalten.

    Eine ultimative machAllesSicher()-Funktion gibt es nicht. Wie auch im echten Leben kommt es ganz auf das Vorhaben an. Auf einer Baustelle sicherst du dich ab indem du einen Schutzhelm trägst. Wenn du fliegst hast du am besten nen Fallschirm im Gepäck. Beim Autofahren legst du den Sicherheitsgurt an. Und so weiter.


    Hier findest du eine Liste über die verbreitetsten Sicherheitslücken. Das sollte eigentlich alle Fragen beantworten.
     
  12. 8. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    Das ist doch wirklich nicht schwer!

    Daten kommen vom Formular und gehen in die Datenbank:
    mysql_real_escape_string

    Daten kommen aus der Datenbank oder per POST/GET und sollen auf der Seite ausgeben werden:
    htmlentities()
     
  13. 9. November 2010
    AW: Sicherheitslücke bei Sucheingaben (php)

    dafür gibts besondere funktionen PHP: filter_input - Manual
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.