2013-05-21 6 views
6

Ich habe eine dynamische Webseite, die andere Leute in ihre Webseiten einbetten wollen, mit einer iframe (nicht notwendigerweise mit irgendwelchen fortgeschritteneren Techniken wie JavaScript).Ist es sicher, ein beliebiges externes Stylesheet in meine Webseite einbetten zu dürfen?

Anstatt selbst alle Arten von Designs und Styles bereitzustellen, überlege ich mir, ihnen zu erlauben, ein eigenes Stylesheet für meine Seite über einen HTTP GET Parameter zu erstellen und ein solches externes Stylesheet über eine URL einzubetten w/<link type="text/css" rel="stylesheet" href & hellip; auf meiner Seite.

Ist das sicher? Wird es das Sicherheitsparadigma meiner Website verletzen? Ich bin mir bewusst, dass zusätzlicher Text mit CSS allein eingefügt werden könnte, und tatsächlich könnten Elemente entfernt werden (was den Hauptaspekt darstellt, wenn ich solche Funktionen für meine Benutzer bereitstelle), aber alles, was mir sonst noch bewusst sein sollte?

Können böswillige Personen über ein solches CSS Links auf meine Website einfügen, um von meinem http-Referer zu profitieren und möglicherweise einige Prüfungen zu verletzen, oder ist die CSS-Einfügung auf Text beschränkt?

+0

Importieren von etwas (was auch immer) von einer externen Ressource könnte jemals ein Sicherheitsrisiko sein. Aber um Ihre "Links" -Frage zu beantworten: nein. Sie könnten Elemente verstecken, Text hinzufügen usw., aber es ist nicht möglich, einen Link mit CSS zu erstellen (oder zumindest sollte es vom Browser verhindert werden, weil es Cross-Site-Tip ist). –

+3

Siehe [Cross-Site-Scripting in CSS-Stylesheets] (http://stackoverflow.com/q/3607894/102937) –

+0

Dies ist kein Duplikat von http://StackOverflow.com/questions/13876961/how-do- Ich-Sicher-Benutzer-Eingabe-ist-CSS-und-nicht-bösartiger Code, ich habe keine Texteingabe auf meiner Website. Ich möchte nur erlauben, ein externes Stylesheet zu referenzieren, keine Benutzereingaben auf meiner eigenen Domain zu speichern. – cnst

Antwort

0

CSS kann keine verknüpfbaren Inhalte einfügen. Es kann nur stilisieren, positionieren und verbergen, was bereits da ist. Sicher, die Leute können Ihre Seite mit :before und :after Text durcheinander bringen und vielleicht die Dinge ein wenig verwirrend aussehen lassen oder die Bezeichnungen bestehender Links ändern, aber nicht die URLs selbst.

3

Im allgemeinen Fall, nein, allowing third-party CSS is not safe. Einige Implementierungen erlauben JavaScript in CSS, was bedeutet, dass es den Benutzern erlaubt, CSS zu ändern, damit sie beliebiges JavaScript im Kontext Ihrer Seite ausführen können.

Wenn dies jedoch eine Art "White-Label" -Seite sein soll, wo es Teil der Site zu sein scheint, in die es eingebettet ist und die Tatsache, dass es sich wirklich um Ihre Seite handelt, ist nur ein Implementierungsdetail Es scheint mir keine große Sorge zu sein. Die Person, die das CSS "Drittanbieter" angibt, ist der Websitebesitzer. Es handelt sich also nicht wirklich um einen Drittanbieter - sie gehen nicht selbst zu XSS!

Aber niemand anderes sollte jemals CSS auf eine Seite setzen, die unter Ihrer Kontrolle sein soll, weil es wirklich unter der Kontrolle von jedem steht, der das CSS kontrolliert.

+0

Das ist auch meine Meinung. Sicher, der Eigentümer der Website könnte schädliche Inhalte einfügen, aber warum sollten sie? –

+0

Nun, sehen Sie, die Seite soll sowohl von den Endbenutzern (meist ohne externes CSS, aber potentiell mit einigen Cookies) als auch von Web-Entwicklern (mit externem CSS) verwendet werden, und ich möchte nichts machen zu kompliziert, wenn für jede Gruppe zwei unterschiedliche Domänen verwendet werden.Also, in welchem ​​Kontext wird JavaScript in CSS ausgeführt? Wäre es in der Lage, (a) Links hinzuzufügen, so dass meine Seite als Referer angezeigt wird, und (b) Cookies aus meiner Domain zu lesen, zu ändern oder zu setzen, oder ähnliches? – cnst

+0

@cnst: Das hängt von der Implementierung ab. Es gibt verschiedene Funktionen in verschiedenen Agenten, die zur Skriptausführung führen können, und ich kenne die Besonderheiten der meisten nicht. Die sicherste Annahme wäre: "Es ist gleichbedeutend damit, dass Leute ein beliebiges SCRIPT-Tag auf Ihrer Seite platzieren." – Chuck

Verwandte Themen