2009-06-11 8 views
1

Basierend auf einer Antwort sah ich in dieser Frage: LinkIst es sicher, Apache-Server angewiesen zu haben, .js- und .css-Dateien als PHP zu behandeln?

Ich frage mich, ist das eine sichere Sache zu tun?

Angenommen, ich implementiere dies und es wird eine Seite angefordert, die ein paar JS- und CSS-Dateien enthält. Werden die Textdateien einfach gesendet oder parst der Server sie zuerst? Habe jetzt keinen Server, um es zu testen.

Ist dies auch eine übliche Methode der Arbeit? Ich denke, dass das Einrichten Ihrer Dateien, so dass Sie immer die richtige Implementierung basierend auf Benutzereingaben erhalten, ziemlich hart sein kann, wenn es um CSS und JavaScript geht.

+0

Fragen Sie "Hey, ich bin faul und will die einfachste Apache-Konfiguration möglich. Wird etwas schlimmes passieren, wenn ich mein CSS über PHP weitergeben?" Oder fragst du etwas Komplizierteres? –

Antwort

11

Für dynamisches CSS und Javascript müssen Sie sie nicht immer in .js oder .css Dateien haben. Was Sie dort tun können, ist tatsächlich eine Verbindung zu einem PHP-Skript, das sie generiert, so dass alle anderen .js und .css-Dateien, die nicht dynamisch sind, nicht von PHP analysiert werden. Im Allgemeinen ist es eine schlechte Idee, alles, insbesondere Mediendateien, über einen App-Server/dynamisches Parsing auszuführen, es sei denn, dies ist absolut notwendig (dasselbe gilt für .net, RoR, Django usw.).

<link rel="stylesheet" type="text/css" href="mycss.css"/> 

Browser behandelt das gleiche wie:

<link rel="stylesheet" type="text/css" href="mydynamiccss.php?param=somevalue" /> // this one would be dynamic on params, location or something else maybe colors etc. 

Sie können auch dynamische js oder CSS und schieben Sie es durch Umschreiben nehmen, damit sie die richtige Erweiterung hat, aber es ist eigentlich eine PHP-Datei, die dynamisch ist auch, wenn Sie nicht möchten, dass Ihre Links und Script-Tags falsche Erweiterungen haben.

+1

+1 das ist eine bessere lösung als einfach php code in .js & zu werfen.CSS-Dateien –

+2

Wenn Sie JavaScript oder CSS mit PHP erstellen, achten Sie darauf, Header ("Content-Typ: application/javascript") oder Header ("Content-type: text/css") zu setzen. Andernfalls erkennt der Browser es möglicherweise nicht richtig. – ruquay

0

Solange die .css und .js-Dateien, die verknüpft sind, auf einem anderen Server sind, sollte es sicher sein. Alles, was Sie Apaches zu tun sagen, ist die Behandlung von .css und .js Dateien als PHP für die Dateien, die es selbst bedient.

3

Es ist nicht üblich, Apache behandelt standardmäßig .js und .css-Dateien als statische Dateien, was bedeutet, dass es keine zusätzliche Verarbeitung durchführt, es sendet sie einfach.

Sie können Apache konfigurieren, um Dateien beliebiger Erweiterung durch irgendeine Art von Programm (wie PHP) zu trichterieren, aber es ist ungewöhnlich für Bilder, CSS und andere statische Dateien.

4

Es ist nicht unsicher, es sei denn, Sie erlauben Benutzern, css/js-Dateien hochzuladen.

+1

+1. Es wird wahrscheinlich kein Problem für die meisten Dateien sein, aber es könnte unbeabsichtigte Folgen haben, wenn eine Ihrer js/css-Dateien zufälligerweise die Zeichenfolge '

3

Ein großes Problem dabei ist, dass es die Fähigkeit von Apache, Caching-Header zu führen ernsthaft behindern würde - es behandelt statische Dateien so viel leichter cachefähig als PHP-Dateien.

Ich würde sicherlich nie das tun. Ich könnte auch fragen, warum sie Javascript in solch einer großen Menge automatisch generieren. This Antwort ist viel praktikabler als eine Methode zur Anpassung von JavaScript-Verhalten.

Verwandte Themen