• 締切済み

「名前を付けて保存」をできなくする方法

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

みんなの回答

回答No.4

わかりました。 この仕組みは特別な技術を使用しているものではありません。 ブラウザでHPをみると、通常前のページの履歴(Referer)が送信されます。これを判別しているようです。ですのでRefererを送信されない環境ではみることができないはずです。細かく見ていないのでわかりませんがReferer以外の要素もあるかもしれません。 閲覧させてもらったページは恐ろしく凝ったページだったので色々と仕掛けがしてありました。 IEなどで保存する時は、前のページ(Referer)を送信していないからだと思います。 自分も昔考えましたが、完全に守ることは不可能です(すべて画像にするしかないと思います)。

  • taba
  • ベストアンサー率61% (349/567)
回答No.3

私が書いたのは、フレームページ http://www.komiya.co.jp/optanqfx/frame.htm 自体が直接表示できないということです。確認いただきましたか? これが直接呼べないのだから、保存できないのは当然じゃないかということです。実際、入口のページは保存できますし(プロテクトしていないだけかもしれませんが)。

cjk
質問者

補足

そうですね・・・。 恥ずかしながら・・・、 気付きませんでした。 そうなると、保存できない以前の問題として、 <body>タグの間に <frameset>を使わないでも 表示させるにはどうしたらいいかということに なりますね・・・。 今のところ、まだ想像が出来てません。 ご指摘、ありがとうございました。

  • taba
  • ベストアンサー率61% (349/567)
回答No.2

実際にはじかれているということは、ブラウザが保存するときに送る要求が、通常のページ表示とは異なるという可能性がひとつ。詳細は分かりませんが。 あるいはこのサイトは構成が全てフレームになっていますが、そのフレームは通常のトップページからしか表示できない(下部のコンテンツはフレームからしか呼べない)という、単純なリファラチェックなのかもしれません。実際、フレームを直接呼ぼうとするとエラーになりますし。 ご自身でも何らかのコントロールをなさりたいのであれば、無償で利用できるというのですから、申し込んでみればいかがでしょうか。

cjk
質問者

補足

コメントありがとうございます。 直接アクセス拒否は 親記事でも書いたように、 PHP等でもすることができますから、 表示だけに関して言えば、そこまで 驚きません。 ただ、手間がかかるということだけですが。 しかし、保存に関しては、普通、右クリック禁止を しているところでも、それをすり抜けて 保存できます。 しかし、ここのサイトはそれができません。 ということは、保存の行為をする際に 何かの切り分け(関数等)をして、保存拒否に 至らせているわけです。 それがあるなら、ここまで悩まないのですが・・・。 ネット上で幾ら調べてもそれに合致しそうな ものはありません・・・。

回答No.1

PHPだと思います。私も仕組みはわからないのですが、ウチのサイトは「多重ダウンロードのみ防止」をしています。まだ調整中ですが「アクセス禁止の画面」にしたり「ポップアップで警告」したりといろいろできるようです。 やり方は人それぞれですのでApachiのデータのやり取りの仕組みやポートの仕組みがわかっていれば比較的簡単にPHPで組むことができるそうです。 今、ウチのシステム管理の人に聞いたら即答で「できる」といわれました。「サンプルソースは必要か?」と聞いたら「全部自分で組んじゃうからいらない、人の作ったものより自分のやり方の方が早い」とのことでしたよ。

cjk
質問者

補足

コメントありがとうございます。 ただ、文面が抽象的ですので、 もう少し細かく書いて欲しいです。 多重ダウンロードのみ防止をしていると いうことは保存をしようとする際に 何らかの関数等を使って、その行為に 大して、拒否しているのですよね。 その切り分けになるものがあれば、 それから色々想像が出来ますが、 今の段階では、「保存」に対しての 切り分ける命令(関数)が分からないので、 悩んでいます。 そこらへんの詳細を宜しくお願いします。

関連するQ&A

専門家に質問してみよう