register_globals off - korrekte syntax

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

  • register_globals off - korrekte syntax

    hallo experten,

    ich möchte meine scripte auch unter "register_globals off" lauffähig machen und, wenn ich schon einmal dabei bin, die syntax korrekt schreiben (auch wenn im moment alles läuft).

    nach vielen stunden in der docu/foren glaube ich, dass meine scripte in folgenden punkten geändert werden müssen:

    1.) übergebene variable nicht einfach verwenden, sondern mit $_post['name'] auslesen
    2.) variablen grundsätzlich initialisieren: $var=0; bzw. $var = array();
    3.) file- oder image upload: nicht $bild_name sondern $_POST["bild"]['name']
    4.) statt <? in zukunft <? php

    weiter die kontrolle übergebener variablen:

    5.) übergebene id in variable $num für sql-abfrage bereinigen: $num = intval($_POST['$num'])
    6.) input feld auf vorhandensein von NUR zahlen checken: $check=ereg('[^0-9]',$feld_name);

    meine fragen:
    sind diese gedanken so richtig?
    was habe ich vergessen?
    laufen die scripte dann zuverlässig mit "register_globals off"?

    für weitere hinweise sehr dankbar,

    wolfgang
    Zuletzt geändert von weserweb; 02.11.2002, 20:23.

  • #2
    Soweit ist das fast richtig und schon sehr gut.

    zu 1) Funktionen sollten nur so aufzurufen sein, wie sie vom Entwickler gedacht sind. In einem Forum wird die Funktion zum Beitragsschreiben normalerweise per POST aufgerufen. Sie sollte deshalb nicht per GET aufgerufen werden können. Ausnahmen kann es immer mal geben.
    Also du musst je nach Eingabart zwischen $_GET, $_POST, $_COOKIE, $_SESSION unterscheiden.

    zu 2) ja, das ist eine zusätzliche Sicherheitsmaßnahme, wenn register globals aktiviert ist. Wenn register_globals deaktiviert ist, ist das sicherheitsrisiko dabei eher geringer. Aber sicher ist sicher und man sollte das wennmöglich immer machen.

    zu 5 und 6) das musst du natürlich nur machen, wenn die Daten nur Zahlenwerte sein dürfen. Wenn du auch Stringwerte speicherst, benutze am besten mysql_escape_string() statt intval() (also bei den Feldern, in die stringwerte kommen).
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      @Troublegum

      danke für die schnelle info!

      noch eine frage zum korrekten initialisieren von variablen:

      PHP-Code:
      $result mysql_query("SELECT text_start,text1,text2,show_obj_mon FROM variables");
      $row mysql_fetch_row($result);
      $text_start nl2br($row[0]);
      $text1 nl2br($row[1]);
      $text2 nl2br($row[2]); 
      sind hier die variablen $result, $row etc. automatisch initialisiert oder muss ich explicit vor dem ersten einsatz der variablen noch etwas wie >> $result=""; $row=""; $text_start=""; << schreiben?

      leider finde ich in der docu dazu nicht das letztendliche statement.

      gruss, wolfgang

      Kommentar


      • #4
        Die Variablen sind alle korrekt initialisiert.
        nicht korrekt initialisiert sind variablen, wenn du mit ihnen arbeitest, ohne dass du ihnen einen wert zuweist.

        Ein Beispiel, wo es nicht so ist..
        PHP-Code:
        $result mysql_query("SELECT * FROM tabelle LIMIT ".(($page-1)*10).",10"); 
        korrekterweise müsste es wie folgt heissen:
        PHP-Code:
        if(isset($_GET['page'])) $page intval($_GET['page']);
        else 
        $page=1;
        if(
        $page==0$page=1;
        $result mysql_query("SELECT * FROM tabelle LIMIT ".(($page-1)*10).",10"); 
        Man könnte auch noch überprüfen, ob es diese Seite überhaupt gibt (mit count() ).
        [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
        [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
        [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

        © Harald Schmidt

        Kommentar


        • #5
          Hallo Herr Troublegum !

          Was genau bringt überhaupt das Unterscheiden von Variablen bei der Variablenübergabe durch $_GET, $_POST ?

          Kommentar


          • #6
            ok, alles verstanden!

            ich werde dann so verfahren.

            und wenn dann doch noch änderungen nötig sein sollten, bist du schuld!

            vorschlag:
            ich habe es ja nun selbst erlebt, dass viele stunden investiert werden müssen, um alle relevanten infos zu bekommen.
            fühlt sich vielleicht jemand berufen, das mal knapp in einem tut zusammenzstellen?

            btw: wo liegt Barad Dûr?

            gruss, wolfgang

            Kommentar


            • #7
              ok, alles verstanden!

              ich werde dann so verfahren.

              und wenn dann doch noch änderungen nötig sein sollten, bist du schuld!

              vorschlag:
              ich habe es ja nun selbst erlebt, dass viele stunden investiert werden müssen, um alle relevanten infos zu bekommen.
              fühlt sich vielleicht jemand berufen, das mal knapp in einem tut zusammenzstellen?

              btw: wo liegt Barad Dûr?

              gruss, wolfgang

              Kommentar

              Lädt...
              X