tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von leon_20v
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
225
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    leon_20v leon_20v ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    117
    Hallo,

    ich hätte ein paar Fragen zur Sicherheit im PHP.

    Einmal geht es darum, ich hole öfter Variablen mit

    PHP-Code:
      $page $_GET["page"]; 
    was ist damit für ein Sicherheits Risiko verbunden?
    Wie kann ich es minimieren?

    Dann hab ich ein auf Session basiertes Login System. Wie funktioniert das eigentlich? Ich stelle mir jetzt nur die Frage, wenn ich mich jetzt bei einer anderen Seite einlogge das auch auf Sessions basiert und danach auf meine Seite gehe, ob ich dann nicht auch ein eingeloggter User bin?
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ja, es kann je nach Code ein Sicherheitsrisiko sein. Schau mal filter_input() und filter_input_array() an.

    Nein. Die Session ist auf dem einer 'Seite' pro User. Auf einer anderen Seite ists eine andere Session. Die Session läuft immer auf dem Server, nicht im Client.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    was ist damit für ein Sicherheits Risiko verbunden?
    Das kannst du ganz einfach testen mit diesem noch relativ harmlosen Beispiel:

    PHP-Code:
    <?php 
    if(isset($_GET['input'])){
        
    $input $_GET['input'];
        echo 
    $input;
    }

    ?>

    <form method="get">
    <input type="text" name="input">
    <input type="submit" name="submit" value="submit">
    </form>
    In das input schreibst du dann einfach mal <script> alert('hallo');</script> und schickst das Formular ab.

    Grundsätzlich gilt immer die Regel : Eingaben von Benutzern wird niemals vertraut.
     
    In order to understand recursion, one must first understand recursion.

  4. #4
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Und für diese Frage, die du heute Nacht schon in deinem anderen Thema gestellt hattest (http://www.tutorials.de/php/368152-s...ml#post1906513), eröffnest du wenige Stunden später im Forum ein zusätzliches Thema, blos weil du bislang noch keine Antwort erhalten hast?

    Da kann man dir nur die Netiquette #12 ans Herz legen, zukünftig solche Doppel-/Pushpostings zu unterlassen, der du im übrigen mit deiner Registrierung zugestimmt hattest.

    Zitat Zitat von Netiquette #12
    Bitte erstelle keine Doppel-/Mehrfach-/Pushpostings. Dazu zählen insbesondere das Erstellen identischer Themen in mehreren unterschiedlichen Unterforen, das mehrfache oder erneute Einstellen eines bereits vorhandenen Themas, und das Posten von Beiträgen, die einzig und allein dem Zweck dienen, das entsprechende Thema in der Themenauflistung wieder weiter oben zu platzieren (sog. „Thread Pushing“). Derartige Beiträge werden restlos gelöscht. Sollte der Eindruck bei unseren Moderatoren entstehen, dass wissentlich gegen diesen Punkt verstoßen wurde, hat dies die unbegrenzte Sperrung des Accounts zur Folge.
    Geändert von spicelab (29.10.10 um 12:37 Uhr) Grund: Tipp-Ex
     

  5. #5
    leon_20v leon_20v ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    117
    @ Spicelab
    Es geht doch nicht nur darum, sonder auch um die Session und hat wohl mit dem Thema Gästebuch kaum mehr was zu tun!!
    Das man sich immer über jeden Müll aufregen muss!


    Wie kann ich denn dieses Risiko vermindern?
    Hiermit?:
    PHP-Code:
    $page mysql_real_escape_string($page); 
    Geändert von leon_20v (29.10.10 um 12:39 Uhr)
    Yaslaw bedankt sich. 

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von yaslaw Beitrag anzeigen
    Wie kann ich denn dieses Risiko vermindern?
    Ach, ich zitiere mich ja so gerne weil die Leute meine Beiträge nicht lesen....
    Zitat Zitat von yaslaw Beitrag anzeigen
    Ja, es kann je nach Code ein Sicherheitsrisiko sein. Schau mal filter_input() und filter_input_array() an..
    Geändert von Yaslaw (29.10.10 um 12:42 Uhr)
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    Avatar von spicelab
    spicelab spicelab ist offline ZENmechanic
    Registriert seit
    Feb 2010
    Beiträge
    1.744
    Zitat Zitat von leon_20v Beitrag anzeigen
    und hat wohl mit dem Thema Gästebuch kaum mehr was zu tun!!
    Ah ja, auch noch um keine Ausrede verlegen

    Wenn dem so ist, warum dann zunächst die Frage in besagtem Thema?!

    Zitat Zitat von leon_20v Beitrag anzeigen
    Das man sich immer über jeden Müll aufregen muss!
    An einem Müllhaufen kann man sich nunmal nicht erfreuen
     

  8. #8
    leon_20v leon_20v ist offline Mitglied Gold
    Registriert seit
    Oct 2010
    Beiträge
    117
    ach jetzt sei doch nicht so...
    ich wollte das mit der Session wissen und dann hab ich das hinzugefügt.


    yaslaw mit was soll ich bei filter_input() filtern?
    http://php.net/manual/de/function.filter-input.php

    ich verstehe nicht wie ich das auf mein Problem anwenden soll.

    Ich hole ja mit $_GET eine Zahl in die Variable $page.
    ich hätte da eher an sowas gedacht:
    PHP-Code:
     ereg_replace("[^0-9]"""$page); 
    was wahrscheinlich auch falsch ist

    kannst du mir das mit dem filter_input () erläutern sodass ich das auch kapiere****
     

  9. #9
    Joe Joe ist offline Mitglied Brokat
    Registriert seit
    Aug 2009
    Ort
    Thüringen
    Beiträge
    339
    Zitat Zitat von yaslaw Beitrag anzeigen
    Ach, ich zitiere mich ja so gerne weil die Leute meine Beiträge nicht lesen....
    Deine Geduld möchte ich haben
    Ist ja nicht das erste mal das man entweder Tips gibt, ganze Skripte schreibt oder etliche Posts lang hilft und aufeinmal kommt a) keine Antwort oder b) Tips werden überlesen c) wurde kurzerhand nen völlig neues Script verwendet.

    Ob da mal nen Danke kommt ka jedenfalls wird nicht einmal nen Thread als erledigt markiert.
    Schon nen sehr merkwürdiges Verhalten insgesamt.
     

  10. #10
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mit filter_input kannst du eine Variable aus $_GET auslesen und gegen ein Muster prüfen.
    -> http://www.php.net/manual/de/intro.filter.php
    -> http://www.php.net/manual/de/filter....s.validate.php
    -> http://www.php.net/manual/de/filter....s.sanitize.php

    In deinem Fall ein Validate
    PHP-Code:
    $page filter_input(INPUT_GET'page'FILTER_VALIDATE_INT);
    //oder wenn noch ein Minimum und ein Maximum dabei sein soll
    $page filter_input(INPUT_GET'page', array('filter' => FILTER_VALIDATE_INT'options'   => array('min_range' => 1'max_range' => 10)); 
    leon_20v bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  11. #11
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    Wenn du dir mal die Filter Flags anschaust wird dir vermutlich schon einiges klarer.

    Mal von den filter Funktionen abgesehen solltest du immer auf das überprüfen was du auch erwartest.
    Soll heissen wenn du eben in $page eine Zahl erwartest dann überprüfst du z.B. mit ctype_digit ob es sich auch tatsächlich um eine Zahl handelt.
     
    In order to understand recursion, one must first understand recursion.

Ähnliche Themen

  1. Sicherheit? Wie und was?
    Von BeaTBoxX im Forum PHP
    Antworten: 4
    Letzter Beitrag: 28.04.11, 13:28
  2. Sicherheit?
    Von hhunderter im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.01.09, 03:03
  3. Sicherheit
    Von NCortex im Forum PHP
    Antworten: 5
    Letzter Beitrag: 08.08.07, 12:32
  4. Sicherheit?
    Von Prophet05 im Forum PHP
    Antworten: 15
    Letzter Beitrag: 27.03.05, 01:10
  5. sicherheit
    Von polar im Forum PHP
    Antworten: 1
    Letzter Beitrag: 01.11.02, 02:29