PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

22-03-2007, 11:02
|
JimDaniels
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 26
|
|
HTML Code bei Eingabe erlauben
hallo,
wahrscheinlich werden mich einige steinigen wollen für diese idee, ist aber notwendig bei mir.
ich möchte ein formular, wo der user einen html code eingeben kann. dieser wird in der db gespeichert und an anderer stelle wieder ausgegeben (als htmlcode, also ohne htmlspecialchars etc.)
das wär ja nicht so schwer, wenn nur meine ganzen sicherheitsbedenken nicht wären. was für unsicherheitsfaktoren gibt es denn?? wenn ich php code eingebe, wird dieser ja ganz einfach ausgegeben und nicht ausgeführt. gibt es sonst noch dinge, auf die ich achten muss??
Ach ja, mysql_real_escape_string werde ich schon verwenden.
Geändert von JimDaniels (22-03-2007 um 11:05 Uhr)
|

22-03-2007, 11:19
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Re: HTML Code bei Eingabe erlauben
Zitat:
Original geschrieben von JimDaniels
das wär ja nicht so schwer, wenn nur meine ganzen sicherheitsbedenken nicht wären. was für unsicherheitsfaktoren gibt es denn??
|
Den hier:
Zitat:
ich möchte ein formular, wo der user einen html code eingeben kann.
|
Da du das nicht genauer spezifiert hast, darf der Nutzer also alles mögliche eingeben.
Ich könnte also bspw. per Iframe fremde Inhalte einbinden, oder auch Javascript, womit ich dann bspw. die Zieladresse eines Loginformulares auf deiner Seite auf ein Script auf meinem Server ändere, so dass ich die Daten deiner Nutzer ausspähen kann, etc. pp.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

22-03-2007, 11:40
|
JimDaniels
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 26
|
|
Na schön, das sind doch schon mal 2 dinge, ich fange also einfach die tags <script> und <frame> oder <iframe> ab. sollte doch reichen, oder??
sonst noch etwas, mir macht das ganze mit php ein bißchen sorgen. werden die befehle wirklich nicht ausgeführt, wenn man sie einfach so eingibt, oder gibt es nicht doch eine möglichkeit, wie der user es fertig bringt, das die befehle als php interpretiert werden.
|

22-03-2007, 11:46
|
Benny-one
Master 
|
|
Registriert seit: Jan 2002
Ort: Fulda
Beiträge: 5.700
|
|
@Jim: Nimm strip_tags und erlaube einfach nur Tags wie z.B. b, strong, p, a, i, u, span, blockqoute, ul, li, div, img, table, tr, td, th, tbody
Das sollte ausreichen.
|

22-03-2007, 13:19
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Zitat:
Original geschrieben von JimDaniels
Na schön, das sind doch schon mal 2 dinge, ich fange also einfach die tags <script> und <frame> oder <iframe> ab. sollte doch reichen, oder??
|
Nein.
Zitat:
sonst noch etwas, mir macht das ganze mit php ein bißchen sorgen. werden die befehle wirklich nicht ausgeführt, wenn man sie einfach so eingibt
|
Wenn du die Daten als reinen Text behandelst, werden sie nicht als PHP geparst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

23-03-2007, 09:03
|
JimDaniels
Newbie
|
|
Registriert seit: Jan 2004
Beiträge: 26
|
|
ich werde es einfach mal so probieren. Und die idee mit strip_tags hört sich gar nicht schlecht.
danke euch allen.
|

29-02-2008, 16:24
|
Blitzschlag
Newbie
|
|
Registriert seit: Jul 2007
Beiträge: 29
|
|
wow ist ja schon alt der Thread *g
Naja aber bevor ich einen neuen aufmache will ich es hier etwas weiterführen.
Ich möchte auch, dass meine User HTML benutzen können sollen und dürfen sie auch. Wegen der Benutzerfreundlichkeit benutze ich TinyMCE Editor.
Klar weiß ich, dass ich Javascript ausschalten kann und mir der User doch bösartiges unterschieben kann.
Deswegen mache ich das bis jetzt so: hoffe ihr seit damit zurfrieden.
Alles was vom TinyMCE Editor kommt:
Um SQL Injection zu vermeiden adslashes();
Um JavaScript uns sonstiges zu vermeiden striptags(); Bei striptags erlaube ich dann fast alle HTML tags ausser die frame geschichte und so weiter.
FRAGE: Wie sehr kann ich mich auf striptags verlassen ?
Es ist egal ob der user seine seite verunstalten kann mir ist nur wichtig, dass er mir kein javaScript unterschieben kann.
Was könnte man noch in Bezug auf Sicherheit und TinyMCE Editor tun für alle die denn nicht kennen ist so ein ähnlicher Editor wie FCKEditor
Geändert von Blitzschlag (29-02-2008 um 16:27 Uhr)
|

29-02-2008, 16:35
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
|
|
Zitat:
Um SQL Injection zu vermeiden adslashes();
|
Besser gleich mysql_real_escape_string() verwenden.
Zitat:
Es ist egal ob der user seine seite verunstalten kann mir ist nur wichtig, dass er mir kein javaScript unterschieben kann.
|
Dann ist imho strip_tags() ein etwas zu grobes Geschütz. Dann wäre es für mich einfacher einfach einen regExp zu machen
PHP-Code:
preg_replace('/<script[^>]*>.*<\\/script>/isU','',$string);
Gruss
tobi
|

29-02-2008, 16:39
|
Blitzschlag
Newbie
|
|
Registriert seit: Jul 2007
Beiträge: 29
|
|
Zitat:
Besser gleich mysql_real_escape_string() verwenden.
|
Mache ich sonst auch immer nur leider verändert er das so scharf, dass ich dann nicht mehr stripslashes drauf anwenden kann. HTML soll ja im enddefekt durchkommen.
Man Reguläre Ausdrücke sind immer so schwer *g aber ich habe mich auch damit auseinander gesetzt.
Die möglichkeit habe ich auch schon benutzt dachte, (nachdem ich nicht schlafen konnte weil ich dachte alles wäre unsicher) dann aber och ich weiß ja was sie dürfen und was nicht also striptags() dann kann ich sicher sein, dass ich nichts vergessen habe.
|

29-02-2008, 16:46
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
|
|
Zitat:
Mache ich sonst auch immer nur leider verändert er das so scharf, dass ich dann nicht mehr stripslashes drauf anwenden kann. HTML soll ja im enddefekt durchkommen.
|
Ähm strip_slashes() brauchst du auch nicht bei einem String der mit mysql_real_escape_string() bearbeitet wurde.
Und
Zitat:
Hinweis: Ist magic_quotes_gpc aktiviert, wenden Sie zuerst stripslashes() auf die Daten an. Das Bearbeiten bereits in irgend einer Form maskierter Daten durch mysql_real_escape_string führt ansonsten dazu, dass bereits Maskiertes doppelt maskiert wird.
|
die magic_quotes_gpc solltest du auf off haben oder sonst zuerst ein strip_slashes() drüber.
Zitat:
Man Reguläre Ausdrücke sind immer so schwer *g aber ich habe mich auch damit auseinander gesetzt.
|
Sind kompliziert aber brutal mächtig
Gruss
tobi
|

29-02-2008, 16:52
|
Blitzschlag
Newbie
|
|
Registriert seit: Jul 2007
Beiträge: 29
|
|
Der Hinweis ist cool. Vielleicht löst das Probleme mit denn ich umständliche Lösungen gefunden hatte *lach.
Danke aufjedenfall für deine Antworten.
Ohja sehr mächtig sogar benutze nur die leichten für mod_rewrite
Naja aber wie es aussieht kann ich mich auf jeden fall auf stripTags verlassen das ist ja meine größte sorge gewesen.
Gruss
|

29-02-2008, 17:14
|
3DMax
PHP Senior
|
|
Registriert seit: Jan 2004
Beiträge: 1.916
|
|
Zitat:
Original geschrieben von Blitzschlag
Naja aber wie es aussieht kann ich mich auf jeden fall auf stripTags verlassen das ist ja meine größte sorge gewesen.
|
da bin ich anderer meinung, selbst mit regulären dingen wird es unmöglich sein alle fälle abzudecken, js einzuschleusen. zumindest, wenn du html zulässt.
z.b. js als bild verkleidet: <IMG SRC="javascript :alert('XSS');">
|

29-02-2008, 17:24
|
Blitzschlag
Newbie
|
|
Registriert seit: Jul 2007
Beiträge: 29
|
|
Zitat:
z.b. js als bild verkleidet: <IMG SRC="java script:alert('XSS');">
|
Habe ich mir auch schon überlegt. Aber meinste mann kann auch komplizierten gefährliches Javascript einschleusen ?
|

29-02-2008, 20:04
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.105
|
|
Zitat:
Habe ich mir auch schon überlegt. Aber meinste mann kann auch komplizierten gefährliches Javascript einschleusen ?
|
Wie oben erwähnt wurde, zum Beispiel die Zieladresse eines Formulars ändern. Dem Skript ist ziemlich Wumpe, von wo aus es ausgeführt wird. Das Schlimme ist, das es ausgeführt wird bzw. du es nicht raussortierst!!
Und es bleibt ja nicht nur bei JavaScript. Du kannst ja auch weitere CSS-Dateien über @import nachladen. Da kannst du sicherlich auch wieder Skripte einschleusen!
|

29-02-2008, 20:27
|
Blitzschlag
Newbie
|
|
Registriert seit: Jul 2007
Beiträge: 29
|
|
Ok ich habe es begriffen dan wäre es ja quasi unmöglich ausser einen bomben sicheren regulären Ausdruck.
MMM was denkst du was man dagen tun könnte ?
Inzwischen weiß ich ja was man so damit anstellen könnte aber eine wirklilche Problemlösung habe ich
nicht.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|