- ベストアンサー
CGIでアップロード
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
サーバのクオータ管理が正しく働くのであれば気にしなくてもいいのかもしれませんが、 >大容量のテキストファイルの類をアップロードしてきた場合、全部サーバ側に来ないと容量のチェックは無理なように見えますが。 Perl CGI側でできそうなことはsysread関数で長さを制限しながら読み込み、制限を超えるとdieでスクリプトを終了させてしまうという手が考えられます。また、スクリプト起動時にディスク容量を確認(サーバによって方法は異なると思います)する動作もできると思います。 セキュリティ面ではありませんが、日本語ファイル名のファイルが転送されてきたとき、Unix上でEUCコードの日本語ファイル名に変換できないことがあります。半角かな禁止や文字化けへの対処は大変面倒なので、アルファベット+数字だけのファイル名でのアップロードに制限するといいのですが、なかなか守ってくれません。このサイトのように事前に文字をチェックするシステムを導入ればいいのではないかと思っているのですが、いまだに実現できていません。
その他の回答 (2)
- nta
- ベストアンサー率78% (1525/1942)
要はアップロード時にうまくサイズチェックできるようにするということではあるのですが、ブラウザのアップロード機能でいきなり送信させることは危ないとかんがえています。サーバ側からはパソコン上にあるファイルサイズをチェックするということもできませんし、相手がプログラムでプレーンテキストのデータを連続送信してきた場合には途中でも受信を拒否するようにcgiのプログラムを書くか、JavaScriptやCookieなどを利用して送信元の事前チェックを厳しくする必要があります。
お礼
大容量のテキストファイルの類をアップロードしてきた場合、全部サーバ側に来ないと容量のチェックは無理なように見えますが。 使用しているサーバはレンタルしていて、 「 なお、CGI に関する制限としましては、 メール&ウェブではお客様が設置したCGIプログラムが消費する サーバリソースの消費量を監視しており、サーバの既定の値を超えた 場合、自動的に該当プログラムのプロセスを停止する措置を行います 」 ということだそうです。 後は、プロキシ―経由を禁止して、おかしいとみなしたプロバイダーを禁止しようかと考えています。
- nta
- ベストアンサー率78% (1525/1942)
よくわからないのですが、サーバはhttpサーバだと思いますが、MIMEタイプはPOSTまたはGETメソッドでクライアント側からサーバにアップロードするときに、形式を指定する時に使うと思われますが、「サーバ上に指定されたMIMEタイプをクライアントからアップロードする」という動作はどういう状況を念頭に入れているのでしょうか。 ファイルのアップロードはあらゆるファイルタイプのデータを転送できます。サーバでのファイルの実行が禁止されていれば、サーバでのウイルスの実行などは制限されます。しかし、大量のデータを送りつけてディスクをパンクさせたり、サーバに保存させたウイルスやブラクラをダウンロードさせて他のクライアントに被害を与えることは可能です。ユーザ認証とファイルサイズ制限は最低でも必要です。サーバ上で定期的にウイルスチェッカによるスキャンも必要でしょう。
お礼
回答、ありがとうございます。 ファイルのサイズ制限は、CGIでする予定です。 クライアントでのウィルスチェックをさせるつもりですが、当てにならないので、サーバ側でブロックすることにしてます。 MIMEタイプは、必要なものだけ許可(文書用ファイルが想定)の形。
関連するQ&A
- IISでCGIを動かすには?
NT4.0にIISでwebサーバを立ちあげています。 ローカルなネットワークではありますが、クライアントからスクリプトを 実行させると「表示できません」というエラーになります。 また、サーバマシンのブラウザで表示させると、CGIスクリプトがそのまま 表示されてしまいます。 .cgiのMIMEタイプの設定がうまくできていないのでしょうか? レジストリをいじってみたのですが、よく分かりませんでした。 お分かりになる方、ぜひ教えてください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- IISでCGIを動かすには?
NT Server4.0でIISのwebサーバを立ち上げています。 ActivePerlをインストールしました。 CGIスクリプトを動かしたいのですが、クライアントから実行させると 単にCGIスクリプトが表示されるだけです。 .cgi拡張子のMIMEタイプの登録が必要なのでしょうか? レジストリをいじってみましたが、よく分かりませんでした。 あまり詳しくなく、初心者に近いですがよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- CGI掲示板アップロード、403エラー
WEBサイト製作初心者のものです。 Perlで作られたフリーの掲示板をダウンロード、 借りたレンタルサーバーにcPanelをつかってCgi-bin にアップロード。 このようにすれば、レンタルサーバーにアクセス、 Index of のcgi-binを選択すれば、掲示板が表示されるはずですが 403 アクセス権のエラーと表示されてしまいます (cPanel付属のCRMソフトはインストール後Index ofから選択すれば正常に表示されます) 3つの条件 Perlのバージョン、アップロード先ディレクトリ、 フォルダごとのパーミッション設定は、推奨設定どおりになってます。 どうしてこのエラーが出るのでしょうか?
- ベストアンサー
- Perl
- CGIを使用してブラウザからファイルをアップロード
CGI(perl)を使用して、ユーザー側からサーバーへファイルのアップロードをしたいと思います。 いろいろサンプルをみてみたのですがよくわからず…。 なのでごくシンプルなソースを教えていただきたいのです。 サイズが大きいのはアップさせないようにするとか、そういうものも一切なくして、ただ単純に サーバーへアップロードさせるだけのものが知りたいです。 よろしくお願いします。
- ベストアンサー
- CGI
- CGIを使用したファイルのアップロードで別サーバーを指定
CGI(PERL)を使用してファイルのアップロードができるようにしました。 このアップロードの場所をCGIが設置してある場所以外のサーバーにしたいのですが、 どのようにしたらいいでしょうか? もしくは不可能でしょうか?
- 締切済み
- Perl
- CGIデータのアップロードについて
CGI&perlの掲示板をカスタマイズして、 既に開設しているHPで使うために、 アップロードしようと試みるのですが、 受け付けてくれません。 初心者で、何が悪いのか良く解りません。 ちなみにHPは、infoseekです。 cgi-binのディレクトリへアップロードするのですが、 igo-bbs.cgi bbs.dat を受け付けてくれません。 cgi-lib.pl jcode.plはアップロード出来ます。 ほとほと、困っております。 よろしくご指導のほど、お願い申し上げます。
- ベストアンサー
- その他(インターネット・Webサービス)
- perlを使用したcgiでの画像アップロードについて
いつもお世話になっております。 私自身のHPで画像のアップロードが出来る様になればいいなと思い、 cgiの勉強がてら調べていた所、下記HPがヒットしたのでサンプルスクリプトを使用し、アップロードをしたのですが正常にアップできませんでした。 http://www.aimix.jp/cgi/acccgilibupfile.html テストとして、【36,864 バイト】とのjpgファイルをアップしたのですが、 サーバには、【622 バイト】のjpgファイルが作成され、もちろん正常に表示されませんでした。 ※サーバはLinuxの自宅サーバを使用しております。 ※cgi-lib.plは導入済みです。 ※スクリプトの内容を一行だけ下記の様に変更しております。 【open OUT,">./img/$fnme";】にして、配下ディレクトリの【img】に保存するように設定。ディレクトリパーミッション777 その他はデフォルトの内容です。 ※cgiパーミッション755。 ※wrapper.cgiにてcgiのエラーはなし。 ※perlは、【which perl】コマンドにて/usr/local/bin/perlであることを確認済みです。 以上が確認したことなのですが、原因がわかる方、ご教授お願いします。
- ベストアンサー
- CGI
- ドメインから自宅サーバにアクセスした時、アップロードCGIフォームからファイルをアップロードする事ができない
自宅のwebサーバにファイルをアップロードするCGIを作成しました。 <input type="file">を使ったものです。 プライベートアドレスでアクセスしたときは、普通にアップロードできますが、 ドメインやグローバルアドレスでアクセスしたときはアップロードできません。 タイムアウトになってしまいます。 perlのwarnをかけて、CGIプログラムが動いているかどうかを調べましたが、どうやら動いていないみたいです。 ルータで80番のポートを開放してるので、サーバには普通にアクセスでききます。 他になにかポートを開放しなきゃいけないのでしょうか? ご回答よろしくお願いいたします。
- 締切済み
- CGI
- httpでファイルアップロード
セキュリティー上、FTPでアップロードできないのですが、HTTPでファイルをアップロードできるソフトはありますでしょうか? WWWサーバには、CGIやSSIはなく、JavaServletが動く環境ですが、できれば環境依存しないJavaアプレットが理想です。 又、クライアントにソフトウェアを入れエクスプローラ感覚で複数のファイルを簡単にHTTPでアップロードできるソフトがあったら知りたいです。
- 締切済み
- フリーウェア・フリーソフト
- iis+cgiでmultipart/form-data送信がうまくいかない
これまでLinux+Perl/CGIで構築していたWEBサーバをIIS+Perl/CGIに移す必要が生じ、新規にIISによるWEBサーバを構築しました。 一気にコンテンツを移動してもハマるだけだと考え、まずは簡単なコードを記述しCGIが動作するかどうかテストしています。 POSTによるinput type=textのデータ表示まではうまく行きましたが、ファイルアップロードのところで詰まりました。 IIS(Windows)によるWEBサーバの構築は初めてで、何が問題なのかサッパリわかりません。 どなたか問題点あるいはどこをチェックすれば良いかご指摘いただけませんでしょうか。 ●やった事 PerlにてPOSTを利用しmultipart/form-dataにてファイルをアップロードするシンプルなコードを書き、第一段階としてMIMEエンコードされたものをブラウザ上に表示するしようとしてみた。 コードは最下方の通り。 ●症状 送信を実行してもアップロード中のまま(ウィンドウマークが動き続けている)で、IISに設定してある10分程のタイムアウト時間を過ぎて終了してしまう。 TXT、XLS、DOCなどファイル種を変えて試しても全く同じ症状。 ●環境:Windows2000ServerSP4 IIS5.0 Perl5.8.8 *******アップロード画面****** <HTML> <HEAD> <TITILE>ファイルのアップロード</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> **********ここまで*********** *******CGI******************* #!/perl/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>test</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR=\"#ffffff\">\n"; print "$buffer"; print "</BODY>\n"; print "</HTML>\n"; exit; ********ここまで***********************
- ベストアンサー
- CGI
お礼
レンタルサーバ上:irixにて sysread(STDIN, $IN, 制限値) を実行すると、制限値を超えるとだめになるようです。 read(STDIN, $IN, 丸ごとサイズ) を実行すると、一応うまくいくようです。
補足
お礼の文章を訂正します。 制限値を越えるとだめではなくて サーバのプロセス監視によって、このプロセスが止められたようです。