• 締切済み

Apacheで・・・・少し特殊なことを

はじめまして。 Apache最新版をLinuxで使ってます。 WEBサイトを構築してますが、一般アクセス者に 作曲ファイル(MIDIなど)やイラストをUPしてもらい、 それを自由にDL出来るサイトを作ってます。 しかし、中にはCGIをUPしたり、HTMLファイルをUPして、 勝手にHPを作ってしまうような人が見られるようになりました。 CGIはApacheのhttpd.confで該当区域は無効にしています。 しかし、HTMLファイルをアップする人には困っています。 どなた様か、HTMLファイルも開いたらソースが表示されるとか、 DL画面になるなどの方法を教えていただけませんか? 「サーバー詳細」 わけありで、UPプログラムには、ファイル種類限定など出来ません。 DL区域はCGIも.htaccessも無効になっています。 バーチャルホストではありません。 普通にhttp://www.XXXX.XX/DL/ のような普通のサイトです。

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

SetEnvIf Referer "^$" ok <Directory "/path/to/directory"> Order Deny,Allow Deny from all Allow from env=ok </Directory> これで直リンク以外の全てのアクセスが拒否されると思います。 リンクが有効でないホームページなんて意味をなさないですし、これならIEでも効果があるので、かなりの成果が期待できると思います。

  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.2

> CGIはApacheのhttpd.confで該当区域は無効にしています これを行っている場所で、 AddType text/plain .html AddType text/plain .htm AddType text/plain .HTM AddType text/plain .HTML みたいにしてみたらどうでしょうか? ブラウザに渡す属性が text/plain になるので、テキスト表示になると思います。 Mozilla ではうまく行くことを確認しました。 が、IE だと無理なんですね...。 ファイルの中身を読み込んで勝手にHTML だと判断してしまうみたい。 大きなお世話です。 拡張子をtxt や、bin に変えても駄目ですね。 思い余って、 .doc とかにしたら、さすがにワードで開いてくれました。 が、これでは解決にはなりませんよね? テキストファイルであることが判断できたら、lha か zip で圧縮してしまう、とか。 サーバの側から対応できそうなことといったら、このくらいしか思いつきません。

  • yuji
  • ベストアンサー率37% (64/169)
回答No.1

直接的な回答ではないですが、私ならこうしますという回答を。 UPLOADはFTPで行っているのですよね。 それをやめて、Webからアップロードする仕組みを 作って、そのときに許可している形式以外のものを エラーにするようにします。 こうすれば許可しているもの以外が置かれることは ありません。 (ただし作るのは、ちと大変だと思います。)

net-et
質問者

補足

説明不足のようでした。FTPからではなく、WEBからです。 掲示板のファイルUP機能を改造して、作りました。 実は、形式によるエラーの出し方が勉強不足でわかりません。 そこで、 ファイルの種類をサーバー側で特定のフォルダー内だけ変えようと思ったのです。 よろしくお願いします。

関連するQ&A

  • Apacheの設定でHTML文が表示される

    VistaにApache2.2とPerl5をインストールしてCGIを使いたいのですが、CGIが起動しません。 「IT Works!」は表示されたのでインストールはうまくいったと思います。 おそらくhttpd.confの設定だと思うのですが、手元にある本がApacheのバージョンも前のものですしXP対応なのではっきりとはわかりません。 HTML文がそのまま表示される事の注意点やhttpd.confの書き換え方がわかるかたどうか教えてください!!! ----------------------------------- c:\Apache2.2\htdocs\tendays(1-1.cgi)←今回表示されないファイルです c:\perl

    • 締切済み
    • CGI
  • LinuxのapacheでCGIが動かない

    RedHatLinux7でイントラネットでWebサーバーを構築しました(apache)で、CGIを動かしたいのですが、動きません。あるサイトで「httpd.conf の AddHandler cgi-script .cgiを生かせばいい」となっていたのでそうしましたが、まだ動きません。あと何を設定すれば良いのですか?(CGIのパーミッションはちゃんとしています。)httpd.confにCGIの記述が他にもありましたが意味がわからずそのままにしています。

  • Windows版Apacheの設定

    現在AnHttpdを利用していますが、Apacheに変更するつもりです。Apacheを使うのは初めてでして、設定で試行錯誤している段階です。 .htaccessを使わずにApacheのhttpd.confの設定だけで.jsファイルをダウンロードさせない(ソースを表示させない)ようにすることは可能でしょうか? 応答速度を上がるために.htaccessは極力使うのを避けるほうがよいとあるサイトで説明されていました。よろしくお願いいたします。

  • 以前書きこんだ者です。Apacheを自宅サーバーとして動かしています。

    以前書きこんだ者です。Apacheを自宅サーバーとして動かしています。Perlを含むCGIとSSI、それにHtmlをApacheで稼働させたいと思っているのですが、cgi-bin 以下のディレクトリでPerlとCGIを 動かすことはできたのですが、Htmlが動きません。ここに投稿させていただいたところ、CGI専用 ディレクトリでHtmlを動かそうとしているとご指摘されたので、cgi-binのひとつ上のディレクトリ でHtmlを動かそうと、httpd.confの中のServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2"にしました。そしてエクスプローラで”localhost/htmlのファイル”を実行したところ、”Webページが見つかりません”とでてしまいました。何度いろいろなファイルで やっても同じエラーが出てしまいます。どうやらApache2.2のHtmlファイルを認識してくれない ようなのですが原因がわかりません。わかる方どうか教えてください。よろしくお願いします。

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • apacheで使用するのは/?¥?

    apacheをwindows732bitで使用していますが、 httpd.confでDocumentRoot "C:/www/jisaba"と指定してやっても そのファイルは読んでくれず、¥(バックスラッシュが表示出来ない) を使用しC:\www\jisabaと入力するとapacheは指定されたHTMLを 読んでくれます。  多くのapacheサイトや本で使用されている区切りは「/」なのですが、 それだと私の環境だと指定されたHTMLファイルを読み込んでくれません。 いったい何が問題なのでしょうか?

  • redhat 7.0 でApacheでCGI

    今、ApacheでWEBサーバーつくったのはいいでんすが、なぜかどのCGIも動きません。Internal Server Eroor がでます。 おそらくhttpd.confの設定だろうと思うのですが、どうやってもうまくいきません。 ちなみにCGIの中身はちゃんとチェック済みです(フリーのCGIスクリプトを3っつくらいためしました)あと、パーミッション設定もチェック済みで、テキストをただ表示させるだけのCGIすら動きません。 よければどなたかhttpd.confの中身のせときます。 どなたかアドバイスと、くわしくhttpd.confの設定がのってるサイトを教えていただけないでしょうか? あと、できればWebminでの設定方法を知っている方おしえていただけないでしょうか? http://ks-pro.dns2go.com/httpd.conf.txt

  • apacheの入ったフォルダを動かしたい

    apacheの入ったフォルダを動かしたい apacheの入ったフォルダを動かしたいのですが、うまくいきません。おそらく何かをしていないのだと思うのですが、一体どうすればいいのかわかりません。私が認識している、apacheの入ったフォルダを動かすために必要なことは、「(1)httpd.confの設定を変える。(2)ファイルを動かす。(3)apacheを再起動する。」です。しかしこれだとhttpd.confの参照先が移動前の位置になっていてうまく動きません。他のファイルも覗いてみたり、confフォルダの中のoriginalフォルダの中のhttpd.confも同様にいじってみたりしたのですが、よくわかりません。他に何をすればいいのでしょうか? apacheは2.2を使用しています

  • バーチャルホスト (Apache2)

    REDhatEL + Apache2でバーチャルホストを設定しようとしています。 RedHat7 + Apacheの時は、named.conf、zoneファイルの作成、httpd.confの設定でうまくいきましたが、今回はそれでは表示できませんでした。 何か他に設定が必要なのでしょうか?? http://domain/~vartualhost では表示できています。 宜しくお願いします。

  • Apache設定後の?

    Linux(Debian)にApache(1系)だけをインストールしました。 httpd.confの設定も終わり、LAN内のほかのPC(WindowsXP)からはApacheの最初のページは見れるようになっています。 また、どこにHTMLファイルを入れなければならないのかもわかっています。 ところが、ワークグループ内にLinuxのPCが見えないので、どんな手順でそこにファイル入れたらいいのかわかりません。 どうやってHTMLファイルや画像ファイルをコピーするのでしょうか?

専門家に質問してみよう