Forum: PC-Programmierung HTML <object data=.> Ausgabe


von Matthias C. (Gast)


Lesenswert?

Hallo.

Ich habe ein cgi-Skript, dass eine Eingabe entgegennimmt und diese in 
einer leeren Datei (Endung .html) speichert. Neben der reinen Eingabe 
werden zusätzlich html-tags eingefügt, so dass das Ganze vereinfacht in 
etwa so aussieht.
1
<div width="600px" bgcolor="#ffffff">EINGABE</div>

In einer anderen html-Datei soll es dann über
1
<object data='./../guest.html' type='text/html'></object>

eingebunden werden. Funktioniert auch, nur werden die div-attributes 
nicht berücksichtigt. Rufe ich die Datei manuell auf, sieht alles aus 
wie es soll.

Kann mir jemand sagen wieso?

von Daniel A. (daniel-a)


Lesenswert?

bgcolor ist nur für den body tag gültig. Bei allem anderen benötigst du 
css. Bei inline css wäre dass dann z.B. style="background-color:#0FF;". 
Stelle sicher, dass jedes Attribut nur einmal pro Element vorhanden ist. 
Das object tag ist eigentlich nicht zum einbinden von html seiten 
vorgesehen, versuches mal mit '<iframe src="../guest.html"></iframe>'. 
Und das Konzept hört sich nach masivem Murks an.

von Matthias C. (Gast)


Lesenswert?

Thx. Könntest Du das mit dem Murks erläutern?

Habe mir viele Beispiele im Netz angesehen, die im Grunde nach ähnlich 
aufgebaut sind.

Ist nicht hoch effizient und mglw. nicht allzu elegant, aber tut im 
kleinen Rahmen das, was es soll, bis auf die genannte Problematik.

von Daniel A. (daniel-a)


Lesenswert?

Nunja, ich kenne dass normalerweise so, dass ein CGI Script, oder 
eigentlich jede serverseitige Webanwendung, die Seite oder die Daten 
direkt generiert/ausgibt. Es ist nicht unüblich, Benutzereingaben 
zwischendurch in einer Datenbank oder Datei abzuspeichern, oder von dort 
wieder abzurufen, aber das abzuspeichern, was man dem Benutzer nachher 
Anzeigt, habe ich so noch nie gesehen. Dabei muss man auch auf vieles 
aufpassen. z.B. dass die Datei unter keinen Umständen dazu genutzt 
werden kann Serverseitig code auszuführen, dass nicht mehrere 
gleichzeitig in die gleiche Datei schreiben und eventuell nicht nur ihre 
Daten bekommen, etc. Deshalb meinte ich es sähe nach Murks aus.

Unabhängig davon, ich hoffe die Benutzereingaben werden auch richtig 
escaped. Vergisst man es nur einmal, ist es oft ein Leichtes für andere, 
was auch immer man will unter dem Origin anzeigen zu lassen.

Ohne mehr Informationen ist aber das meiste Spekulation. Oh, und das 
width-attribut ist eigentlich auch nur bei Bildern, Videos, 
Canvas-Elementen, Tabellen und iFrames erlaubt, aber nicht bei divs. 
Vermutlich gibt es da noch mehr derartiges in der Seite. Welcher Browser 
akzeptiert denn sowas in 2018 überhaupt noch?

von Matthias C. (Gast)


Lesenswert?

Aus dem opject-tag (erster post) geht ja hervor, dass es sich um ein 
guestbook handeln soll.

Wie gesagt, ich habe nach praktikablen Beispielen hierfür gesucht und 
der Wunsch es so oder so ähnlich zu machen ist nicht ganz unüblich, 
insbesondere wenn man es ohne php und javascript umsetzen will.

Das Thema escaping oder besondere Aufmerksamkeit in Sachen 
Zugriffs-/Ausführungsrechte auf dem Server ist mir klar, aber ich bin 
gerade noch dabei die eigentliche Funktionalität ans Laufen zu bekommen.

Der erste Plan sah vor das Guestbook mit cgi-Zugriff über eine 
sql-Datenbank zu machen, aber der bisher gewählte Ansatz schien mir dann 
irgendwie simpler.

Wenn ich ein Fazit aus Deinem Post entnehmen müsste, könnte ich 
schreiben, dass Du die Guestbookseite mit cgi on the fly genrieren 
würdest, wenn cgi das Mittel der Wahl ist?

von Daniel A. (daniel-a)


Lesenswert?

Ja, genau. Und ich würde zumindest die einzelnen Einträge nicht in die 
gleiche Datei schreiben. Sonst könnten die Inhalte der Einträge, die 
gleichzeitig gesendet werden, durcheinander kommen.

von fop (Gast)


Lesenswert?

Murks könnte z.B. sein, wenn Du die Eingabe ungeprüft in Deine 
.html-Datei reinschreibst. Da kann Dir dann jemand alle möglichen Tags, 
Skripte und so weiter unterjubeln.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.