Im Webdevolopement gibt es einen Grundsatz: Escape soviel wie nur möglich und lasse kein Risiko zu. Dafür gibt es genügend PHP Funktionen, z. B. htmlentities() oder str_replace() die zweifellos hervorragend sind. Ich empfehle auch die Verwendung der Standard Funktionen.
Da diese aber nicht für eine extreme Paranoia (wie meine eine ist) ausreicht, habe ich drei kurze Funktionen runtergetippt die ich hier vorstellen möchte.
Die erste Funktion löscht bestimmte vorgegebene Zeichen aus einem String. Dabei wird jedes Zeichen geprüft und dann entschieden welche im Returnstring landen. (Eine Zeichenprüfung auf Binärebene wäre in dem Script sicher besser gewesen!)
Hier ein Beispiel für den Aufruf der Funktion: Die Zeichen Ampersand und Semikolon werden aus dem String gelöscht!
Das zweite PHP-Script wandelt bestimmte Zeichen in den HTML-Unicode. Dabei wird die nummerische Notation verwendet. Man kann wieder die zu ersetzenden Zeichen auswählen. Ohne Angabe der Zeichen werden alle gewandelt.
Aufgerufen sieht das dann so aus:
Beziehungsweise, so eben:
Rückgängig macht man das dann wieder mit folgendem Script. Es können bestimmte Zeichen angegeben werden, oder eben das totale Demaskieren des Strings über jedes Vorkommen eines HTML-Unicode-Zeichen (Dezimal).
So könnte die Funktion aufgerufen werden:
Demaskiert muss immer der Backslash und das Anführungszeichen, welches für die Stringdefinition verwendet wird. z. B. \\ oder \' ACHTUNG: Wenn ein Leerzeichen im Suchstring ist, dann wird es ebenfalls aus dem String gelöscht, bzw. gewandelt.
Es folgt eine Zeichenanalyse der Sonderzeichen welche für das Webdevolopement von Bedeutung sind.
Also für HTML, CSS, JavaScript, PHP und MySQL.
Zeichen | Beschreibung | Nutzung | HTML Code | UC-DEZ | UC-HEX | URL Code |
---|---|---|---|---|---|---|
< | öffnende spitze Klammer | Erstes Zeichen eines HTML-Element | <; | <; | <; | %3C |
> | schließende spitze Klammer | Letztes Zeichen eines HTML-Element | >; | >; | >; | %3E |
/ | Schrägstrich | Wird für ein schließendes HTML-Element benötigt. Pfadzeichen in einer URL. | &sol; | /; | /; | %2F |
' | Einfacher Apostroh, einfaches Anführungszeichen | Umschließt den Attributwert. | &apos; | '; | '; | %27 |
" | Anführungszeichen oben | Umschließt den Attributwert | "; | "; | "; | %22 |
& | Ampersand-Zeichen, kaufmännisches Und | Erstes Zeichen eines escapten HTML-Zeichen. Sonderzeichen im Query-String einer URL. | &; | &; | &; | %26 |
; | Strichpunkt, Semikolon | Letztes Zeichen eines escapten HTML-Zeichen. | &semi; | ;; | ;; | %3B |
= | Ist-Gleich Zeichen | Verbindet Attributnamen mit dem Attributwert. | &equals; | =; | =; | %3D |
% | Prozent | Sonderzeichen in einer URL | &percnt; | %; | %; | %25 |
! | Rufzeichen | Für ein HTML Kommentar und DOCTYPE Definition | &excl; | !; | !; | %21 |
− | Minus | Für ein HTML Kommentar | &minus; | −; | −; | %E2%88%92 |
# | Raute, Hashtag, Number | Sprungmarke zu einer ID | &num; | #; | #; | %23 |
Zeichen | Beschreibung | Nutzung | HTML Code | UC-DEZ | UC-HEX | URL Code |
---|---|---|---|---|---|---|
{ | Öffnende geschwungene Klammer | Öffnendes Zeichen für den CSS-Block | &lbrace; | {; | {; | %7B |
} | Schließende geschwungene Klammer | Schließendes Zeichen für den CSS-Block | &rbrace; | }; | }; | %7D |
! | Rufzeichen | Für eine !important definition | &excl; | !; | !; | %21 |
" | Anführungszeichen oben | String-Umschließung, z. B. für Schriftarten | "; | "; | "; | %22 |
' | Einfacher Apostroh, einfaches Anführungszeichen | Umschließt einen String | &apos; | '; | '; | %27 |
# | Raute, Hashtag, Number | ID-Selektor, Hex-Farben | &num; | #; | #; | %23 |
. | Punkt | Klassenselektor | &period; | .; | .; | %2E |
% | Prozent | Relative Maßeinheiten in Prozent | &percnt; | %; | %; | %25 |
( | Öffnende runde Klammer | Für CSS-Funktionen | &lpar; | (; | (; | %28 |
) | Schließende runde Klammer | Für CSS-Funktionen | &rpar; | ); | ); | %29 |
* | Asterisk, Stern, Multiplikationszeichen | Universalselektor | &ast; | *; | *; | %2A |
@ | At-Zeichen, Klammeraffe | Leitet ein Media-Query oder Animation ein. | &commat; | @; | @; | %40 |
; | Strichpunkt, Semikolon | Zeilenabschluss nach jeder CSS-Anweisung | &semi; | ;; | ;; | %3B |
> | schließende spitze Klammer | Child-Selektor | >; | >; | >; | %3E |
: | Doppelpunkt | Zwischen CSS-Eigenschaft und CSS-Wert | &colon; | :; | :; | %3A |
Zeichen | Beschreibung | Nutzung | HTML Code | UC-DEZ | UC-HEX | URL Code |
---|---|---|---|---|---|---|
; | Strichpunkt, Semikolon | Beendet einen Befehlsatz! | &semi; | ;; | ;; | %3B |
" | Anführungszeichen oben | Umschließt einen String | "; | "; | "; | %22 |
' | Einfacher Apostroh, einfaches Anführungszeichen | Umschließt einen String | &apos; | '; | '; | %27 |
\ | Umgekehrter Schrägstrich | Entwertung bzw. Maskierung eines Zeichen. z. B. für Apostrophen oder Steuerzeichen | &bsol; | \; | \; | %5C |
/ | Schrägstrich | Kommentarzeichen, Mathemtische Operation Division | &sol; | /; | /; | %2F |
( | Öffnende runde Klammer | Öffnet eine Parameterübergabe bzw. Parameterprüfung z. B.: If oder Function | &lpar; | (; | (; | %28 |
) | Schließende runde Klammer | Schließt eine Parameterübergabe bzw. Parameterprüfung z. B.: If oder Function | &rpar; | ); | ); | %29 |
{ | Öffnende geschwungene Klammer | Leitet einen Anweisungsblock ein. z. B. Function oder If | &lbrace; | {; | {; | %7B |
} | Schließende geschwungene Klammer | Schließt einen Anweisgungsblock. z. B. Function oder If | &rbrace; | }; | }; | %7D |
[ | Öffnende eckige Klammer | Öffnendes Zeichen für ein Array | &lbrack; | [; | [; | %5B |
] | Schließende eckige Klammer | Schließendes Zeichen für ein Array | &rbrack; | ]; | ]; | %5D |
| | Vertikale Linie | Zwei vertikale Linien bedeuten OR (oder) | &vert; | |; | |; | %7C |
& | Ampersand-Zeichen, kaufmännisches Und | Zwei Ampersand bedeuten AND (und) | &; | &; | &; | %26 |
+ | Plus | Zeichen und Stringverkettung, Mathematische Operation | &plus; | +; | +; | %2B |
= | Ist-Gleich Zeichen | Prüfzeichen auf Übereinstimmung, Wertzuweisung | &equals; | =; | =; | %3D |
, | Beistrich | Trennzeichen für mehrere Parameter | &comma; | ,; | ,; | %2C |
! | Rufzeichen | Negation einer Boolean Abfrage (z. B. ! ist Nicht) | &excl; | !; | !; | %21 |
< | öffnende spitze Klammer | Kleiner Zeichen | <; | <; | <; | %3C |
> | schließende spitze Klammer | Größer | >; | >; | >; | %3E |
* | Asterisk, Stern, Multiplikationszeichen | Kommentarzeichen, Mathemtische Operation Muliplikation | &ast; | *; | *; | %2A |
: | Doppelpunkt | Für Objektliteral, Switch-Case | &colon; | :; | :; | %3A |
? | Fragezeichen | Bedingter Operator | &quest; | ?; | ?; | %3F |
Zeichen | Beschreibung | Nutzung | HTML Code | UC-DEZ | UC-HEX | URL Code |
---|---|---|---|---|---|---|
; | Strichpunkt, Semikolon | Beendet einen Befehlsatz! | &semi; | ;; | ;; | %3B |
" | Anführungszeichen oben | Umschließt einen String | "; | "; | "; | %22 |
' | Einfacher Apostroh, einfaches Anführungszeichen | Umschließt einen String | &apos; | '; | '; | %27 |
\ | Umgekehrter Schrägstrich | Entwertung bzw. Maskierung eines Zeichen. z. B. für Apostrophen oder Steuerzeichen | &bsol; | \; | \; | %5C |
. | Punkt | String- und Zeichenverkettung | &period; | .; | .; | %2E |
/ | Schrägstrich | Kommentarzeichen, Mathemtische Operation Division | &sol; | /; | /; | %2F |
( | Öffnende runde Klammer | Öffnet eine Parameterübergabe bzw. Parameterprüfung z. B.: If oder Function | &lpar; | (; | (; | %28 |
) | Schließende runde Klammer | Schließt eine Parameterübergabe bzw. Parameterprüfung z. B.: If oder Function | &rpar; | ); | ); | %29 |
{ | Öffnende geschwungene Klammer | Leitet einen Anweisungsblock ein. z. B. Function oder If | &lbrace; | {; | {; | %7B |
} | Schließende geschwungene Klammer | Schließt einen Anweisgungsblock. z. B. Function oder If | &rbrace; | }; | }; | %7D |
[ | Öffnende eckige Klammer | Öffnendes Zeichen für ein Array | &lbrack; | [; | [; | %5B |
] | Schließende eckige Klammer | Schließendes Zeichen für ein Array | &rbrack; | ]; | ]; | %5D |
| | Vertikale Linie | Zwei vertikale Linien bedeuten OR (oder) | &vert; | |; | |; | %7C |
& | Ampersand-Zeichen, kaufmännisches Und | Zwei Ampersand bedeuten AND (und) | &; | &; | &; | %26 |
+ | Plus | Mathematische Operation | &plus; | +; | +; | %2B |
= | Ist-Gleich Zeichen | Prüfzeichen auf Übereinstimmung, Wertzuweisung | &equals; | =; | =; | %3D |
, | Beistrich | Trennzeichen für mehrere Parameter | &comma; | ,; | ,; | %2C |
! | Rufzeichen | Negation einer Boolean Abfrage (z. B. ! ist Nicht) | &excl; | !; | !; | %21 |
< | öffnende spitze Klammer | Kleiner Zeichen | <; | <; | <; | %3C |
> | schließende spitze Klammer | Größer, Zugriff auf Methoden und Eigenschaften in der OOP | >; | >; | >; | %3E |
* | Asterisk, Stern, Multiplikationszeichen | Kommentarzeichen, Mathemtische Operation Muliplikation | &ast; | *; | *; | %2A |
: | Doppelpunkt | Für Objektliteral, Switch-Case | &colon; | :; | :; | %3A |
? | Fragezeichen | Bedingter Operator | &quest; | ?; | ?; | %3F |
Zeichen | Beschreibung | Nutzung | HTML Code | UC-DEZ | UC-HEX | URL Code |
---|---|---|---|---|---|---|
' | Einfacher Apostroh, einfaches Anführungszeichen | Umschließt Textwerts Datensatz | &apos; | '; | '; | %27 |
, | Beistrich | Trennzeichen zwischen Spalten | &comma; | ,; | ,; | %2C |
− | Minus | Kommentarzeichen, zwei -- leiten einen Einzeiligen Kommentar ein, Umfang-Zeichen für Buchstaben oder Zahlen in einem Behälter, k[a-t]m, Subtraktionszeichen | &minus; | −; | −; | %E2%88%92 |
; | Strichpunkt, Semikolon | Beendet ein SQL Query (Ist nicht zwingend notwendig) | &semi; | ;; | ;; | %3B |
= | Ist-Gleich Zeichen | Vergleichszeichen (Übereinstimmung) von Konditionen, bzw. WHERE a = b | &equals; | =; | =; | %3D |
/ | Schrägstrich | Leitet und schließt ein mehrzeiliges Kommentar ein, Divisionszeichen | &sol; | /; | /; | %2F |
∗ | Sternoperator | Selektor für alle Spalten in einem SELECT Query, Für mehrzeilige Kommentare, /* ... */, Multiplikationszeichen | &lowast; | ∗; | ∗; | %E2%88%97 |
% | Prozent | Repräsentationszeichen für kein, eines oder mehrer Zeichen, Modulo | &percnt; | %; | %; | %25 |
_ | Unterstrich, underline | Repräsentationszeichen für ein einziges Zeichen | &lowbar; | _; | _; | %5F |
( | Öffnende runde Klammer | Umschließt öffnend eine Gruppe (z. B. Spalten, oder Values) und SQL Funktionen z. B. COUNT() | &lpar; | (; | (; | %28 |
) | Schließende runde Klammer | Umschließt schließend eine Gruppe (z. B. Spalten, oder Values) und SQL Funktionen z. B. SUM() | &rpar; | ); | ); | %29 |
[ | Öffnende eckige Klammer | Behälter für einzelne Repräsentationszeichen, l[eo]g findet leg, log aber nicht lag, lug | &lbrack; | [; | [; | %5B |
] | Schließende eckige Klammer | Behälter für einzelne Repräsentationszeichen | &rbrack; | ]; | ]; | %5D |
∧ | und SQL | Ausschließendes Zeichen in einem Behälter, l[∧eo]g findet nicht leg, log aber lig, lug, lag, ldg, lrd usw. | &and; | ∧; | ∧; | %E2%88%A7 |
+ | Plus | Kombinationszeichen, z. B. für ALIAS, Additionszeichen | &plus; | +; | +; | %2B |
. | Punkt | Kombinationszeichen, z. B. für Spaltenjoins | &period; | .; | .; | %2E |
& | Ampersand-Zeichen, kaufmännisches Und | Bitweises UND | &; | &; | &; | %26 |
| | Vertikale Linie | Bitweises ODER | &vert; | |; | |; | %7C |
> | schließende spitze Klammer | Größer-Zeichen | >; | >; | >; | %3E |
< | öffnende spitze Klammer | Kleiner-Zeichen | <; | <; | <; | %3C |
" | Anführungszeichen oben | Mögliche (Interpretationssache) Umschließung einer Zeichenkette | "; | "; | "; | %22 |