Home
Navigation
Impressum
Coder Welten - Programmierung und Optimierung
Coder Welten
 
 

 

 

Syntax und Sicherheit von PHP-Scripts und Applikationen

Die Syntax von PHP

Die Syntax von PHP ist eigentlich recht einfach gestrickt und ebenso einfach zu erlernen. Wichtig ist lediglich, dem Parser mitzuteilen, wo der PHP-Code oder eine Anweisung beginnt und wo der Code oder eine Anweisung endet. Da sich PHP- Code problemlos in HTML-Dokumente einbinden lässt, können mehrerer, von HTML unterbrochener Code-Abschnitte (PHP-Blocks) eingebunden werden. Insofern mehreren Code-Abschnitten innerhalb eines HTML-Dokumentes eingebunden werden, sollte darauf geachtet werden, dass Anweisungen vor der Beendigung eines Code-Abschnittes ebenfalls beendet werden.
Der Beginn und das Ende des PHP-Codes wird dem Parser durch öffnende und schließende Tags mitgeteilt. Lediglich am Ende einer Datei kann gegebenenfalls der schließende Tag entfallen. Einzelne Anweisungen innerhalb des Codes müssen mit einem Semikolon beendet werden. Auch von dieser Regel gibt es eine Ausnahmen. So kann am Ende eines PHP-Blocks das Semikolon entfallen. Um unbeabsichtigte Fehler zu vermeiden, ist es jedoch ratsam auf diese Möglichkeit weitestgehend zu verzichten.
Innerhalb eines Code-Blocks können Kommentare eingefügt werden. Einzeilige Notizen können dabei mit einer Raute oder doppelten Slashes auskommentiert werden. Für ein- und mehrzeilige Kommentare gibt es zusätzlich noch eine dritte Variante, bestehend aus einer Kombination von Slashes mit Sternchen.
Von PHP zu verarbeitende Strings (Zeichenketten) sind in einfachen oder doppelten Anführungszeichen zu setzen. Je nachdem, ob einfache oder doppelte Anführungszeichen verwendet werden sollen, gibt es einige Unterschiede zwischen der Variante mit einfachen und der Variante mit doppelten Anführungszeichen zu beachten. Besonders deutlich werden diese Unterschiede sowie Variablen mit ins Spiel kommen.

Nachfolgend zwei Beispiele von Code-Blöcken mit öffnenden und schließenden PHP-Tags, Kommentaren und Anweisungen zur Ausgabe von Strings:

Ein Beispiel mit einem String in doppelten Anführungszeichen:

<?php

/*--------------------------------------------------
  Mehrzeiliger Kommentar:

  Die erste Zeile enthält den öffnenden PHP-Tag
  und die letzte Zeile den schließenden Tag.
----------------------------------------------------
*/
   echo "Ich bin ein String.\n";
?>

Dass in Programmiersprachen häufig Variablen verwendet werden, denen gewisse Werte zugewiesen werden, dürfte den meisten Einsteigern bekannt sein. Etwas weniger bekannt ist möglicherweise, dass es sich bei Variablen um Bezeichner für Speicherplätze im System handelt und dass eben diese Speicherplätze mit den zugewiesenen Werten belegt werden. Wer nun Variablen und Strings gemischt ausgeben möchte und dabei nicht die Unterschiede von Zeichenketten in einfachen und doppelten Strings beachtet, könnte einige Überraschungen erleben, wie aus dem zweiten Beispiel ersichtlich wird.

Ein Beispiel mit Strings in einfachen Anführungszeichen und mit Script-Tags:

<script language="php">

/*--------------------------------------------------
  In diesem Beispiel werden Script-Tags als öffnende und 
  schließende Tags verwendet.
----------------------------------------------------
*/

# Ein einzeiliger Kommentar beginnt mit doppelten Slashes
# oder mit einer Raute.

$einevar = "bin";

   echo "<br>Ich $einevar ein String.\n";
   echo '<br>Ich $einevar ein String.\n';
   echo "<br>Ich ".$einevar." ein String.\n";
   echo '<br>Ich '.$einevar.' ein String.\n';
   echo "<br>Ich htmlspecialchars($einevar) ein String.\n";
   echo '<br>Ich htmlspecialchars($einevar) ein String.\n';
   echo "<br>Ich ".htmlspecialchars($einevar)." ein String.\n";
   echo "<br>Ich ",htmlspecialchars($einevar)," ein String.\n";

/*--------------------------------------------------
  Ausgabe:

  Ich bin ein String.
  Ich $einevar ein String.\n
  Ich bin ein String.
  Ich bin ein String.\n
  Ich htmlspecialchars(bin) ein String.
  Ich htmlspecialchars($einevar) ein String.\n
  Ich bin ein String.
  Ich bin ein String.
----------------------------------------------------
*/

</script>

Anmerkungen: Falls nicht auf dem ersten Blick erkennbar, die letzten beiden Varianten unterscheiden sich nur dahingehend, dass einmal der Punkt-Operator und einmal der Komma-Operator verwendet wurde. Der Punkt-Operator verbindet im Beispiel die Variable einschließlich der Funktion und der Teilstrings zu einer Zeichenkette, der Komma-Operator listet hingegen alle Bestandteile durch Komma getrennt hintereinander auf und echo gibt sie nacheinander entsprechend der Reihenfolge aus.
Da von PHP in HTML eingefügte Strings nicht die Ansicht eines aufgeräumten Quelltextes beeinträchtigen sollten, können mit \t Tabulatoren gesetzt und mit \n Zeilenvorschübe (Zeilenumbrüche im Quelltext) wie im zweiten Beispiel realisiert werden.

Neben den in den Beispielen verwendeten öffnenden und schließenden PHP-Tags gibt es noch sogenannte Short-Tags, die je nach der Konfiguration des Servers verwendet werden können. Die Verwendung kann jedoch nicht empfohlen werden, da Scripts mit Short-Tags nicht auf entsprechend konfigurierten Servern lauffähig sind.

Sicherheit von PHP-Scripts und Applikationen – Teil I

Wichtiger als die einzelnen Varianten von unterschiedlichen PHP-Tags zu kennen, ist hingegen das Wissen um die Unterschiede bei der Verwendung von einfachen oder doppelten Anführungszeichen. Da jede ungesicherte Ausgabe von Variablen, insbesondere wenn diesen Variablen Werte zugewiesen werden, die von einem Formular übergeben oder aus einer Datenbank abgerufen wurden, ein Risiko in sich birgt, sollte deren Ausgabe nach Möglichkeit immer abgesichert werden. PHP hält dafür die Funktionen htmlspecialchars() und htmlentities() bereit, die eine Reihe von Sonderzeichen in ihre HTML-Code Entsprechungen umwandeln.
Am sichersten ist dabei die Verwendung der Funktion htmlentities() einschließlich der Konstanten ENT_QUOTES als zusätzlicher Parameter. ENT_QUOTES sorgt dafür, dass nicht nur doppelte, sondern auch einfache Anführungszeichen in ihre HTML-Code Entsprechungen umgewandelt werden.

Beispiel:

<?php echo "Ich ".htmlentities($var, ENT_QUOTES)." ein String.\n"; ?>

Im Beispiel gut ersichtlich, der String wird von doppelten Anführungszeichen begrenzt und die einzelnen Bestandteile wurden mit dem Punkt-Operator verbunden. Diese Schreibweise sollte auch dem Einsteigern die geringsten Probleme bereiten. Mehr zum Thema Syntax und Sicherheit auf der nachfolgenden Seite.

weiterlesen » Sicherheit von PHP-Scripts - Teil II

 

Copyright © Verlag Horst Müller - Stendal - 2006 - Impressum - Datenschutz - Nutzungsbedingungen