スタイルシートファイルへのリンクを第三者に知られないようにする方法

このQ&Aのポイント
  • スタイルシートを暗号化したい場合、HTMLと同じファイルに記述することを推奨
  • スタイルシートを別ファイルとし、第三者に知られずにリンクさせる方法として、PHPなどのサーバサイト・プログラムと組み合わせたキャッシュ制御のレスポンス・ヘッダーを出力する手段がある
  • 他にもhtmlヘッダーのメタタグや.htaccessを使用してブラウザーやプロキシサーバにキャッシュさせない方法がある
回答を見る
  • ベストアンサー

スタイルシートファイルへのリンクを第三者に知られないようにする方法

http://faq.shtml.jp/faq_env.html 上記のサイトの第10項目に、「(しかし、キャッシュファイルの存在を考えるならば、CSSファイルに直接リンクを貼るのではなく、PHPなどのサーバサイト・プログラムとの組み合わせでキャッシュ制御のレスポンス・ヘッダーを出力しつつCSSファイルをダウンロードさせるなどの手段を取らない限り、完全防御は難しいです。。)」という記述があります。 このサイトでは、スタイルシートを暗号化したい場合、HTMLと同じファイルに記述することを推薦しています。しかし、どうしてもスタイルシートをHTMLとは別ファイルとし、かつ、そのスタイルシートファイルへのリンクを第三者に知られたくない場合、「PHPなどのサーバサイト・プログラムとの組み合わせでキャッシュ制御のレスポンス・ヘッダーを出力しつつCSSファイルをダウンロードさせるなどの手段」とは、どうやって行なうのでしょうか? 上記以外の方法も、ご存知でしたらお教えください。 ちなみ、.htaccessやhtmlヘッダーのメタタグなどでもブラウザーやプロキシサーバ等にキャッシュさせないようにする方法はあるようですが、これらの方法で上記の方法の代用となるのでしょうか? htmlヘッダーのメタタグでキャシュを無効化 http://support.microsoft.com/kb/234067/ http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1221900807 .htaccessでキャシュを無効化 http://www.kalium.net/image/archives/2004/01/htaccess.html この質問に関連する情報(上記の方法等)が詳細に記載されたサイト等も、ご存知でしたらURLをお教えください。 よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

試したことはないですが、以下のような方法ではどうでしょうか。 CSSは公開ディレクトリの外に置き、PHPで該当CSSの出力を行います。 その際、ノーキャッシュヘッダーを吐くことでキャッシュもされません。 ディレクトリ構成(/var/www/htmlが公開ディレクトリ) /var/www/css/stylesheet.css /var/www/html/index.html /var/www/html/index.php ・index.html <link href="/index.php" rel="stylesheet" type="text/css" /> ・index.php header('Cache-Control: private'); header('Pragma: private'); header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); header('Content-Type: text/css'); header(sprintf('Content-Length: %d;', filesize(dirname(__FILE__) . '/../css/stylesheet.css'))); readfile(dirname(__FILE__) . '/../css/stylesheet.css');

kitty1000
質問者

お礼

mookun2007さん ご回答、ありがとうございました。 なかなかスマートなアイデアですね。 htmlとCSSファイルの間にphpをかませるのですか。 <追加質問1> しかし、なぜCSSファイルは公開ディレクトリの外に置く必要があるのでしょうか(もちろんセキュリティ上公開ディレクトリの外に置いた方がよいことは、納得しますが。)? 私が、CSSのファイル名を隠したいのは、ウェブサイトのファイル収集ロボットを使用してCSSファイルを他のhtmlファイルごともっていかれたくない(できるだけデザインを守りたい)からですが。 <追加質問2> また、htmlファイルとCSSファイルの間にPHPファイルをかまさずに、ただ単に、htmlファイルヘッダー内のCSSファイルへのリンクを暗号化して、公開ディレクトリの直下に.htaccessをおいて、その.htaccessに <Files ~ "\.(html|php)$"> Header add Pragma "no-cache" Header set Cache-Control no-cache </Files> などと記述する方法は、不十分ですか? この場合、通常通りCSSファイルも公開ディレクトリ内に置くことになると思いますが。 よろしくお願いします。

その他の回答 (1)

回答No.2

間違えました。 header('Cache-Control: private'); header('Pragma: private'); ↓ header('Cache-Control: no-cache'); header('Pragma: no-cache');

kitty1000
質問者

お礼

mookun2007さん 追加のコメント、ありがとうございました。

kitty1000
質問者

補足

mookun2007さんへのお礼を書いた後ですが、ここにいる方でmookun2007さんの前述の回答にある方法を利用する場合、CSSフォルダ及びファイル(stylesheet.css)を公開ディレクトリ内においても意図したとおりスタイルシートファイルへのリンクを第三者に知られないかどうかお分かりの方おられますか? 共有レンタルサーバなので公開ディレクトリより上にCSSフォルダ及びファイルを設置することに問題があるためです。 CSSフォルダ及びファイルを公開ディレクトリ内においた場合、正しくCSSはレンダリングされても、それでスタイルシートファイルへのリンク(及びスタイルシートのファイル名:stylesheet.css)を第三者に知られないものかどうかわかりません。 CSSフォルダ及びファイルを公開ディレクトリ内においた状態で、mookun2007さんのコードを書き直すと以下のようになります。 ディレクトリ構成(/var/www/htmlが公開ディレクトリ) /var/www/html/css/stylesheet.css /var/www/html/index.html /var/www/html/index.php ・index.html <link href="/index.php" rel="stylesheet" type="text/css" /> ・index.php header('Cache-Control: no-cache'); header('Pragma: no-cache'); header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT"); header('Content-Type: text/css'); header(sprintf('Content-Length: %d;', filesize(dirname(__FILE__) . '/css/stylesheet.css'))); readfile(dirname(__FILE__) . '/css/stylesheet.css'); よろしくお願いします。

関連するQ&A

  • 外部ファイルでのスタイルシートの書き方

    質問内容は単純です。 どうぞ宜しくお願い致します。 あるweb関連の参考書に、 外部スタイルシートファイル「style.css」の一例として、 そのコード内容が書かれてあったのですが、 それを大雑把に説明すると下記のようになります。 <style type="text/css"> <!-- ~ 中身は、ここでは省略 ~ --> </style> そこで、質問です。 外部ファイルとしてスタイルシートを作成する場合、 上記のような書き方で、はたして良いのでしょうか? 上記のような書き方は、HTMLのヘッダー内にスタイルシートを挿入する場合の書き方 のような気がするのですが、その書き方をそっくりそのまま、外部ファイルへ持って行っても、 問題はないのでしょうか? 参考書が間違っているのかなぁ、と思い、 質問をさせて頂きました。 参考書は2005年発行のものです。

    • ベストアンサー
    • HTML
  • スタイルシートをダウンロードさせない方法

    お世話になります 趣味で運営しているサイトの外部スタイルシートを、ダウンロード不可能にしたいのですがどのような方法があるでしょうか HPに訪れてブラウザ上からソース表示を行い、そこからlinkタグで読み込んでいる外部スタイルシートのURLにアクセスする事で、一般的にはそのHPのスタイルシートをダウンロードする事が可能ですが それを不可能にする方法を知りたいです ぱっと思いつくのは.htaccessかXMLあたりでの制御あたりなのですが具体的に分かりません(-_-) 元々できない事であればしょうがないと思うのですが好奇心で質問です 画像とかも同様の方法でダウンロードできてしまうわけですし、制御する方法はあると思うのですが・・・

    • 締切済み
    • CSS
  • スタイルシートの暗号化について

    スタイルシート(CSS)について質問させてください。 スタイルシートをダウンロードされたくない場合、 .htaccess などでアクセス制限することは可能なのでしょうか? もしくは、*.css を暗号化することは可能でしょうか? 以上、宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • アップロードすると、スタイルシートが反映されない

    外部にcssファイルを作り、 文字のみスタイルシートで制御します。 DREAMWEAVER上でスタイルシートは反映されています。 F12を押しても、スタイルシートは反映されています。 しかし、フォルダからhtmlファイルを直接ひらいたり、 アップロードしたファイルをみると、 スタイルシートが反映されていません、 もちろん、cssファイルも一緒にアップロードしてます。 DREAMWEAVER4を使っています。 なんでだか、わかりません。。。 お手数かと思いますが、よろしくお願いします。

    • ベストアンサー
    • CSS
  • ホームページ作成のCSS(スタイルシート)の質問です。

    ホームページ作成のCSS(スタイルシート)の質問です。 http://clubt.jp/myshop/S0000034373.html 上記のサイトはヘッダーとフッダーしか変更できないシステムです。 (さらにCSSの外部ファイル化ができません) このサイトをカラフルにしたいのですが、CSSの知識がありません。 CSSとは<body>の中に書くものですか? (そんな初心者の知識もありません) なにか良い知恵をお貸し下さい。

    • ベストアンサー
    • HTML
  • スタイルシートに関して教えてください!本当に困っています!

    超初心者で悪いのですが、スタイルシートの記述方法がよく分かりません。確か記述方法は3つあると思うのですが、CSSファイルを利用して記述する方法が分からない(できない)のです。ここからは実際に自分が今使っているホームページ作成サイト(初心者)に書かれていて理解できない(実際にやってみたがうまくいかない)所をここに書きます。 3、CSSファイル利用により記述する方法 テキストエディターで”スタイルを適用する対象名 { ~ }”として記述し、 ファイル保存するときに、拡張子が”.css”というCSSファイルを作ります。 そして、HTMLファイル内にはCSSファイルを参照しなさいという指示である、<LINK href="CSSファイル名.css" type="text/css" rel=stylesheet> をヘッダー部分に記述します。 << CSSファイルデータ例(下記のデータだけを記述して.cssファイルを作成 >> < ファイル名=style.css > p { color:blue } << HTMLデータ例(.cssファイルと同じフォルダ内に作成する) >> <html> <head> <LINK href="style.css" type="text/css" rel=stylesheet> </head> <body> <p>スタイルシート</p> </body> </html> << ブラウザ表示 >> スタイルシート 分かりずらかったらここを参照してください。(たぶん削除されると思うが) http://homepage-how.com/hp/hp-css2.html まず、3に書いてあるとおりにCSSファイルを作成しました。 次からがよく分からないのです。3に書いてあるとおりにHTMLファイルを作成しようと思ったのですが、なぜか、ホームページの基本構造ではないのです。 こういう事です   ↓ <html> <head> <LINK href="style.css" type="text/css" rel=stylesheet> </head> <body> <p>スタイルシート</p> </body> </html> 見ても分かるとおり、タイトルの部分がないのです。 タイトルがなくても良いのですか? あと、このHTMLデータを.CSSファイルと同じフォルダ内に作成するという意味が分かりません。 本当に超初心者で悪いのですが、本当に困っています。誰か分かりやすく教えてくれる方はいないでしょうか?お願いします。

  • スタイルシートファイルのファイル名は、数字だけでも可能ですか?

    独立したスタイルシートファイルのファイル名は、数字だけでも可能ですか? 例:1234.css やはり、「abc123.css」のようにアルファベットで始める必要があるのでしょうか? 参考サイト等あれば、教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • スタイルシートが全く理解できません

    質問させて頂きます。 HPを開こうと思っているのですが、私にとって都合のいいスタイルシートの例文が載っているサイトが見つからないのです。 ヘッダ用の画像を作ったので、 トップページはそのヘッダが画面一番上の中央に来るように(繰り返しなし)、 メニュー(サイドバー?)は左側に羅列されるように、 メイン画面はそのメニューの右側に来るように。 2カラムっていうらしいんですが。 │ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄│ │   ヘッダ画像      │ │____________│ │メ             │  ←この表、崩れて  │ニ             │   表示されてしまいます。 │ュ   メイン画面     │   一番右の縦線は真っ直ぐだと ││             │   仮定してください │              │ │              │ │____________│ こんな感じです。HTMLでもできるのでしょうか?でもHTMLはIE以外のブラウザで見ると崩れると聞いたのでやはりスタイルシートかなと…。 他のページはメニューの右のメインウィンドウに表示されるわけですから、単純なHTMLで充分なHPなので、そのヘッダとindex.htmlをどうにかしたいのです。 あ、1Pだけ別窓で開かせたいページがありまして、そこはヘッダだけでヘッダの下は単純なテーブルが置いてあるだけのページです。 上の図のメニューがなく、ヘッダの下が全てメイン画面なページですね。 普通にHTMLでfixedにすると、画像の上に文字が来てしまうので、とりあえず<br>で間隔を開けてみたんですが、IEとFireFoxでは見え方がぜんぜん違ってしまって、困っています。 本当に基本的な質問なんですが、index.htmlを始めとするHTMLファイルがありますよね。スタイルシートはそれとは別に、text.cssというようなファイルを別に作ってサーバに上げるんですか?それともHEAD部分に埋め込むのでしょうか。 何かいい(コピペしてアレンジすればOK!みたいな)都合のいいサイトをご存知でしたらどうぞ教えて下さい。宜しくお願い致します。

    • ベストアンサー
    • HTML
  • スタイルシートでデザイン

    style.cssからの読み込みで<div class=""></div>を使いテーブルデザインを行っていますが、スタイルシートで表のように、縦3列横2列等で表示させる方法がわかりません。位置指定で表示させるしかないのでしょうか? 最近スタイルシートを使いはじめ、上記のデザイン方法をいろいろなサイトで調べてみましたがわかりませんでした。方法、又は、わかりやすい参考サイトをお教えいただけると幸いです。

    • ベストアンサー
    • HTML
  • 外部スタイルシートへのリンク方法、パスのhtml

    外部スタイルシートへのリンク方法 ※ 具体的なパスの書き方、htmlを教えてください。 当方HPを作成しています。 XXXXX.comというサイトに“CSS”で書式スタイルを定義しています。 XXXXX.com内の“CSS”ですので、 XXXXX.comの中であれば、定義した文字がしっかり反映されています。 これは普通のことです。 さて、このページに、とある外部フォームページ(他社CGIによるもの)を組み込みました。 そのフォームページは外部のプログラムなので、XXXXX.comの画像を使用するにしても、 スタイルシートを使用するにしても、XXXXX.comに対して“パス”を指定する必要があります。 で、画像の場合は、 http://www.XXXXX.com/画像の名前.gifでなんなくリンクさせることには成功。 しかし、スタイルシート(CSS)へのリンクが、成功しません。 書式が全然変わらないのです。 一応<head>内に、このようにしたのですが、やはり間違っているのでしょうか?     ↓ <link href="http://www.XXXXX.com/CSSの名前.css" rel="stylesheet" type="text/css"> <style type="text/css"> htmlにお詳しい方、またはサイト制作にお詳しい方、お待ちしています。 宜しくお願いいたします。

専門家に質問してみよう