2009-06-11 11 views
1

私はこの質問で見た答えに基づいています:LinkApacheサーバに.jsファイルと.cssファイルをPHPとして扱うように指示するのは安全ですか?

私はこれは安全なことですか?

これを実装し、JSとCSSファイルがリンクされたページがリクエストされるとします。テキストファイルは単純に送信されますか、またはサーバーが最初に解析しますか?今すぐテストするサーバーはありません。

また、これは一般的な作業方法ですか?私はあなたのファイルを設定して、ユーザー入力に基づいて正しい実装が得られるようにすることは、CSSとJavaScriptについてはかなり難しいと思っています。

+0

「ねえ、私は怠惰で、最も単純なApache設定が可能です。私のCSSをPHPで渡すと何か悪いことはありますか?」あなたは何かもっと複雑なことをやっているのですか? –

答えて

11

動的CSSとJavascriptの場合は、常に.jsまたは.cssファイルに入れておく必要はありません。あなたがそこでできることは実際にそれらを生成するPHPスクリプトへのリンクです。そのため、動的ではない他の.jsファイルや.cssファイルはすべてPHPによって解析されません。一般的には、絶対に必要な場合を除いて、アプリケーションサーバー/動的解析を使用してすべてのもの、特にメディアファイルを実行することは悪い考えです(.net、RoR、Djangoなどにも同じです)。

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

ブラウザが同じ扱い:

<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. 

ます。また、動的JSやCSSを取ると、それが正しい拡張子を持っていないので、書き換えを通してそれをプッシュすることができますが、それは実際には動的であるPHPファイルでありますあなたのリンクとスクリプトタグに間違った拡張子を付けることを望まない場合も同様です。

+1

+1これはちょうど.js&にPHPコードを投げるよりも良い解決策です。css files –

+2

JavaScriptを使用している場合やPHPを使用している場合は、header( "Content-type:application/javascript")またはheader( "Content-type:text/css")を設定してください。そうしないと、ブラウザが正しく認識しないことがあります。 – ruquay

0

リンクされている.cssファイルと.jsファイルが別のサーバー上にある限り、安全でなければなりません。あなたがしているのは、.cssと.jsファイルをPHPで処理することです。

3

これは一般的ではありません。デフォルトでは、Apacheは.jsファイルと.cssファイルを静的ファイルとして処理します。つまり、余分な処理は行わず、単に送信します。

何らかの種類のプログラム(PHPなど)によって任意の拡張子のファイルを流すようにApacheを設定することはできますが、画像、CSSなどの静的ファイルでは珍しいことです。

4

ユーザがcss/jsファイルをアップロードできるようにしていない限り、安全ではありません。

+1

+1。おそらくほとんどのファイルで問題になることはありませんが、オフチャンスに意図せぬ結果が生じる可能性があります。js/cssファイルの中に文字列 '<?php'または単に '<?'短いタグがついている場合。 これは自分のファイルでは起こりませんが、YUIのようなサードパーティのライブラリを使用している場合は、すべてのベットはオフになっています。さらに、それらのファイルを提供することについてかなり深刻なオーバーヘッドを導入しています。そのように、おそらくあなたが*これをするのに苦労することはありませんが、それはまだお勧めできません。 –

3

大きな問題は、Apacheがキャッシュヘッダーを誘導することを真剣に妨げていることです。静的ファイルをPHPファイルよりはるかに容易にキャッシュできるように扱います。

私は確かにこれをしません。私はなぜ彼らがそのような大量のjavascriptを自動生成しているのか疑問に思うかもしれません。 This答えは、javascriptの動作をカスタマイズする方法としてはるかに実行可能です。

関連する問題