Forum Doku Wiki Blog

Forumsarchiv 2007, Dezember
Formular: Richtig umgehen mit addslashes() und stripeslashes()

archivierte Beiträge lesen

  1. (PHP) Formular: Richtig umgehen mit addslashes() und stripeslashes() von Christoph, 13. 12. 2007, 21:45

Formular: Richtig umgehen mit addslashes() und stripeslashes()

Der folgende Beitrag wurde am 13. 12. 2007, 21:45 Uhr von Christoph veröffentlicht.

Nabend :-)

Ich mache derzeit ein Kontaktformular, und das soll möglichst wasserdicht sein: Egal, was jemand dort einträgt, der Scriptablauf nicht beeinträchtigt sein.

Muss ich dazu den Formular-Inhalt dann einmal durch die Funktion stripeslashes() jagen, und vor der Ausgabe wieder addslashes() machen, oder wie macht man sowas typischer weise?

Grüße
Christoph

Formular: Richtig umgehen mit addslashes() und stripeslashes()

Der folgende Beitrag wurde am 13. 12. 2007, 21:50 Uhr von Matze veröffentlicht.

Hallo,

> Ich mache derzeit ein Kontaktformular, und das soll möglichst wasserdicht sein: Egal, was jemand dort einträgt, der Scriptablauf nicht beeinträchtigt sein.
>
> Muss ich dazu den Formular-Inhalt dann einmal durch die Funktion stripeslashes() jagen, und vor der Ausgabe wieder addslashes() machen, oder wie macht man sowas typischer weise?

denk doch nocheinmal darüber nach. Wozu sollte das gut sein?
Erst escapen, dann wieder rückgängig machen?

Wichtig ist bei Kontaktformularen, dass keine weiteren Header gesendet werden können, als die selbst festgelegten. Dazu dürfen keine Zeilenumbrüche in den Header geschleust werden.

Der Text im Mailbody sollte den Headern entsprechend kodiert werden.
Also z.B. mit htmlspecialchars() bei text/html.

Grüße, Matze

Formular: Richtig umgehen mit addslashes() und stripeslashes()

Der folgende Beitrag wurde am 13. 12. 2007, 21:57 Uhr von Anschinsan veröffentlicht.

Wenn auf dem Server magicquotes = On eingestellt ist, brauchst du beides nicht. Das erfährst du mit phpinfo().

Überhaupt wäre ein Besuch gut auf:
http://de.php.net/manual/de/function.addslashes.php

Ich verwende bei meine Kontaktformularen noch striptags().
Wenn dein Script keine Datenbankanfrage startet bist du damit schon Mal gut dabei ...

Schönen Abend
Anschinsan

Formular: Richtig umgehen mit addslashes() und stripeslashes()

Der folgende Beitrag wurde am 14. 12. 2007, 08:13 Uhr von Tom veröffentlicht.

Hello,

> Wenn auf dem Server magicquotes = On eingestellt ist, brauchst du beides nicht. Das erfährst du mit phpinfo().

Wenn auf dem Server magicquotes = On eingestellt ist, müssen die hinzugefügten Maskierungen (Backslashes) wieder entfernt werden, um die Rohdaten für die Weiterverarbeitung zu erhalten.
Bevor man damit etwas anstellt (SQL-Datenbnak, Mailheader, etc.) müssen sie entsprechend dem neuen Kontext _escaped_ werden bzw. auf unerlaubte Werte hin überprüft werden.

> http://de.php.net/manual/de/function.addslashes.php
>
> Ich verwende bei meine Kontaktformularen noch striptags().

Das ist auch nicht notwendig. Schließlich verliert man dadurch Informationen.
Bevor man die Daten im HTML-Kontext wieder ausgibt, muss man sie aber vorbereiten darauf.

Dafür gibt es
htmlspecialchars()  http://de2.php.net/manual/en/function.htmlspecialchars.php
nl2br()             http://de2.php.net/manual/en/function.nl2br.php
wordwrap()          http://de2.php.net/manual/en/function.wordwrap.php






Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


Formular: Richtig umgehen mit addslashes() und stripeslashes()

Der folgende Beitrag wurde am 14. 12. 2007, 11:18 Uhr von dedlfix veröffentlicht.

echo $begrüßung;

> Muss ich dazu den Formular-Inhalt dann einmal durch die Funktion stripeslashes() jagen, und vor der Ausgabe wieder addslashes() machen, oder wie macht man sowas typischer weise?

Das Feature Magic Quotes hatte den Zweck, Daten für SQL-Statements aufzubereiten. Doch es setzt zu einem falschen Zeitpunkt an. Es müssen nicht sämtliche Eingabedaten sondern die Daten, die in ein SQL-Statement wandern dem Datenbanksystem gemäß behandelt werden. Gibt man die Daten in einem HTML-Kontext aus, wie es bei einem Affenformular üblich ist, wenn Eingabefehler festgestellt wurden, sind die Slashes völlig fehl am Platz. Hier wäre htmlspecialchars() angebracht.

Empfehlenswert ist es, die Magic Quotes generell zu deaktivieren. Kann man die Konfiguration von PHP nicht ändern, oder ist es nicht voraussehbar, welche Konfiguration man antrifft, empfehle ich die Funktion aus Example#2 der eben verlinkten Seite einmalig am Scriptanfang einzubinden.

Wenn nun die Magic Quotes ausgeschaltet oder dessen Auswirkungen beseitigt wurden, kann und sollte man nun die Daten für eine bestimmte Ausgabe kontextspezifisch behandeln.

Die wichtigsten/häufigsten im Webumfeld sind:
Datenbanksystem: die für das System bereitgestellte Funktion (MySQL: mysql_real_escape_string(), Postgres: pg_escape_*(), PDO: ->quote(), usw.)
HTML: htmlspecialchars()
URL: je nach Position urlencode() oder rawurlencode()

Teilweise sind auch mehrere Kontexte zu beachten. Daten, die in eine URL eingebettet werden sollen, die in einem HTML-Kontext steht, sind zuerst URL-gerecht und anschließend HTML-gerecht zu behandeln.


echo "$verabschiedung $name";

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4