• 締切済み

ブラウザに表示されたhtmlファイルの保存拒否方法

http://www.komiya.co.jp/optanqfx/ というサイトで 「名前を付けて保存」をしたら、 全て「アクセス拒否」の画面だけが ダウンロードされました・・・。 当然、右クリックやら文字参照やら 直接アクセス拒否やら想像できることは しましたが、全く駄目でした。 保存を制御する関数(PHPやJavaScript、 または、.htaccessの命令等)でも あるのかと思い、色々調べましたが、 有効なものはありませんでした。 どうして出来るのでしょうか? コメントをお願いします。

みんなの回答

回答No.6

>私も保存出来たjsファイルを・・・ Javascriptのほうは、マウスクリック処理以外はHTMLを書いているだけのようです。 デコードしたソースつけようかと思いましたが、ちょっと大きいので略。 状況によって同じURLで別の内容のファイルがダウンロードされているので、「名前を付けて保存」の禁止処理は、JavaScriptなどのクライアントサイドの処理ではなく、サーバ側(PHPなど)の処理と思います。

回答No.5

>yambejpさん FireFoxで保存できたから、たいした技術じゃないというのは言いすぎではないでしょうか。(じゃあ、その方法はわかりますか?という話です。) ネット銀行、証券などほんの少しでもセキュリティをあげるために努力しているHPでは、たとえHTMLであってもソースを隠蔽しようとします。正直、このサイトのような手法(アクセス拒否+文字参照)でソースを隠蔽しているサイトを私は知りません。 10社中、10社がこの方法を使用しているならツールを作ってアタックを仕掛けますが、 10社中、1社がこの方法を使用しているならめんどうなのでアタックの対象からははずします。 私はそこそこ特筆に値する技術だと思います。

unicode
質問者

補足

そうですね。私も凄い技術だと思います。 私も保存出来たjsファイルを・・・ 大変ですが、ソースを見て、 ここの主題の解決法を探したいと思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

FireFoxで保存したいページまでいって、 Javascript有効をオフにすれば なんの支障もなく保存できましたよ。 たいした技術じゃありません。

unicode
質問者

補足

確かにFireFoxで保存したら、 今まで表示されているHTMLすら どこも保存出来なかったのに (その代わりにアクセス拒否の画面が 保存されました)、 表示されているソースが保存出来ましたね。 ただ、一緒に保存されたファイルの中には jsファイルが沢山ありますね。 こういうのを使って、アクセス拒否まで しているんですね。 ちょっとjsファイルを見ていますが・・・、 頭が痛いです。 でも、少なからず、IEで拒絶出来るのは、 凄い技術に感じてます。 FireFoxで保存可能の情報、 教えて頂いてありがとうございます。

回答No.3

>具体的に 「保存を制御する関数」を探しているのでしたら、そんな関数ありません。なんらかの処理を自分で考えて組み込む必要が有ります。 たとえば、 if ($_SERVER["HTTP_REFERER"]=="") { print <<<_EOT <body>アクセス拒否</body> _EOT; }else{ print <<<_EOT <body>普通のHTML</body> _EOT; } 他にも、javascriptで自分のURLをチェックして(URLごとに)表示を変える、オープンコードのサーバに自分で処理を組み込んでコンパイルするなど方法はいろいろあると思います。 ただし、「名前を付けて保存」はブラウザ依存の機能ですので、完全に抑止する方法はありません。http://www.komiya.co.jp/optanqfx/もIEでは駄目というだけで、他のブラウザなら落とせる可能性がありますし、それが駄目でも自分でHTTP用のツールを作成しファイルを落とす方法もあります。

unicode
質問者

補足

上記に近い構文にて もともと書いていましたが、 直接アクセスは遮断出来ますが、 どうしても保存をすると 別のファイルで残りますね・・・。 難しいですね。

回答No.2

追加。 PHPだとHTTPヘッダのRefereの値は、 $_SERVER["HTTP_REFERER"] で取得するようです。

参考URL:
http://jp2.php.net/reserved.variables
回答No.1

なんかセキュリティ重視の内容でもないのにずいぶん頑丈で、無駄にすごいサイトですね。 想像の域をでませんが、 サーバサイドの処理でHTTPヘッダのRefererを参照して、特定のReferer以外は「アクセス拒否」の画面を返しているんだと思います。(「名前を付けて保存」の場合、Refererが確か""とか"-"とかになった記憶があります。) 右クリック禁止は、いつもどおりです。document.onmousedownをjavascriptで拾っているはず。。。

unicode
質問者

補足

$_SERVER['HTTP_REFERER'] を使って、。「名前を付けて保存」をした場合の 引数を確認してみましたが、 何もなかったです(""のことかな?)。 それに""で指定してみましたが、 何も変化はありませんでした・・・。 具体的にもう少しお願いします。

関連するQ&A