• ベストアンサー

CGIでアップロード

ntaの回答

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.3

 サーバのクオータ管理が正しく働くのであれば気にしなくてもいいのかもしれませんが、 >大容量のテキストファイルの類をアップロードしてきた場合、全部サーバ側に来ないと容量のチェックは無理なように見えますが。  Perl CGI側でできそうなことはsysread関数で長さを制限しながら読み込み、制限を超えるとdieでスクリプトを終了させてしまうという手が考えられます。また、スクリプト起動時にディスク容量を確認(サーバによって方法は異なると思います)する動作もできると思います。  セキュリティ面ではありませんが、日本語ファイル名のファイルが転送されてきたとき、Unix上でEUCコードの日本語ファイル名に変換できないことがあります。半角かな禁止や文字化けへの対処は大変面倒なので、アルファベット+数字だけのファイル名でのアップロードに制限するといいのですが、なかなか守ってくれません。このサイトのように事前に文字をチェックするシステムを導入ればいいのではないかと思っているのですが、いまだに実現できていません。

yuki_chan
質問者

お礼

レンタルサーバ上:irixにて sysread(STDIN, $IN, 制限値) を実行すると、制限値を超えるとだめになるようです。 read(STDIN, $IN, 丸ごとサイズ) を実行すると、一応うまくいくようです。

yuki_chan
質問者

補足

お礼の文章を訂正します。 制限値を越えるとだめではなくて サーバのプロセス監視によって、このプロセスが止められたようです。

関連する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が設置してある場所以外のサーバーにしたいのですが、 どのようにしたらいいでしょうか? もしくは不可能でしょうか?

  • CGIデータのアップロードについて

    CGI&perlの掲示板をカスタマイズして、 既に開設しているHPで使うために、 アップロードしようと試みるのですが、 受け付けてくれません。 初心者で、何が悪いのか良く解りません。 ちなみにHPは、infoseekです。 cgi-binのディレクトリへアップロードするのですが、 igo-bbs.cgi bbs.dat を受け付けてくれません。 cgi-lib.pl jcode.plはアップロード出来ます。 ほとほと、困っております。 よろしくご指導のほど、お願い申し上げます。

  • 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