投稿日:2004年07月29日 作成鷹の巣

No.16909 どのようなCGIを使用したら、サーバがおかしくなり賠償責任が生じるの?



どのようなCGIを使用したら、サーバがおかしくなり賠償責任が生じるの?

No.16909 投稿時間:2004年07月29日(Thu) 23:48 投稿者名:みの URL:

よくレンタルサーバの注意事項において、自作CGIを使用して、サーバがおかしくなったときには、
賠償責任があります。という記述がみかけます。
でも実際どのようなCGIを使用したら、サーバがおかしくなるのでしょうか?
サーバがおかしくなるようなコードを書かない限り、おかしくはならないと思うのですが、間違っていますでしょうか?

よくフリーのフォームメールCGIとかパスワードCGIとかを見かけます。
これらの(一応)完成されたソフトを、サーバの仕様の加減で正常に稼動させる為に、
FTP上であちこちいじっている限りでは問題はおこらないですよね?

どなたかご存知のかた、よろしくお願い致します。


必ずしも「特定のサーバー用のセキュリティを重視したもの」にはなり得ない可能性があります。

No.16910 投稿時間:2004年07月30日(Fri) 00:35 投稿者名:アクア URL:

> よくフリーのフォームメールCGIとかパスワードCGIとかを見かけます。
> これらの(一応)完成されたソフトを、サーバの仕様の加減で正常に稼動させる為に、
> FTP上であちこちいじっている限りでは問題はおこらないですよね?

フリーのCGIってのは「どのサーバーでもたいてい動作するような作り」になってるとか
同じように「どのサーバーでもとりあえず動くハズ」な設置方法がマニュアルに載ってたりするので
必ずしも「特定のサーバー用のセキュリティを重視したもの」にはなり得ない可能性があります。

なのでCGI自体が「完成されたもの」であったとしても
アップするだけで使える~的な安易な考え方で
内部でどういう処理が行われているかを理解しようとしなかったり
(あるいは理解する知識がなかったり…フリーCGIを使う多くの人がそうでしょうが)
デフォルトのログファイル名等をそのまま使用していたり
FTPでアップする際に対象サーバーにとってより適切な
パーミッション(特に書き込み権)の設定をしていなかったりすると
公開すべきではないデータが閲覧可能になってしまったり
外部から勝手にデータを改竄されたりする可能性があります。
「千丈の堤も螻蟻の穴を以て潰ゆ」なんて言葉がありますが
まさにその言葉通りの意味になりますね。
例えレンタルサーバーの個人ホームページ用スペースであっても
穴があればサーバー全体、ひどいと他サーバーにまで
影響を与えてしまうような操作ができてしまいます。

ということでCGI自体に問題のあるコードがないから大丈夫だろう、とか
一般的に広く使われているCGIだから大丈夫だろう、とか
パーミッションってよくわからないけど
FTPで色々いじってたら動くようになっちゃった、とかいうレベルでは
現実的には甘い考えであると言わざるを得ないかと思います。
(実際にはそこまで考えていない人達の方が多そうですけどねぇ)


PHPだと、サーバがおかしくなることもないですよね?

No.16911 投稿時間:2004年07月30日(Fri) 01:08 投稿者名:みの URL:

>
> フリーのCGIってのは「どのサーバーでもたいてい動作するような作り」になってるとか
> 同じように「どのサーバーでもとりあえず動くハズ」な設置方法がマニュアルに載ってたりするので
> 必ずしも「特定のサーバー用のセキュリティを重視したもの」にはなり得ない可能性があります。
>
> なのでCGI自体が「完成されたもの」であったとしても
> アップするだけで使える~的な安易な考え方で
> 内部でどういう処理が行われているかを理解しようとしなかったり
> (あるいは理解する知識がなかったり…フリーCGIを使う多くの人がそうでしょうが)
> デフォルトのログファイル名等をそのまま使用していたり
> FTPでアップする際に対象サーバーにとってより適切な
> パーミッション(特に書き込み権)の設定をしていなかったりすると
> 公開すべきではないデータが閲覧可能になってしまったり
> 外部から勝手にデータを改竄されたりする可能性があります。
> 「千丈の堤も螻蟻の穴を以て潰ゆ」なんて言葉がありますが
> まさにその言葉通りの意味になりますね。
> 例えレンタルサーバーの個人ホームページ用スペースであっても
> 穴があればサーバー全体、ひどいと他サーバーにまで
> 影響を与えてしまうような操作ができてしまいます。
>
> ということでCGI自体に問題のあるコードがないから大丈夫だろう、とか
> 一般的に広く使われているCGIだから大丈夫だろう、とか
> パーミッションってよくわからないけど
> FTPで色々いじってたら動くようになっちゃった、とかいうレベルでは
> 現実的には甘い考えであると言わざるを得ないかと思います。
> (実際にはそこまで考えていない人達の方が多そうですけどねぇ)

確かに...私もそこまで気にしていませんでした。
おかしくなったら、その時だと...
そう思って、最近PHPに乗り換えようと思っているところです。
PHPだと、サーバがおかしくなることもないですよね?
それに早いし。サーバの負荷ないし。
こう考えるとCGIと比べたPHPのデメリットはなさそうですが、
何か考えられるでしょうか?


CGI(Perl)の場合、suEXEC が実装可能です。

No.16919 投稿時間:2004年07月30日(Fri) 10:19 投稿者名:ラリ URL:

> こう考えるとCGIと比べたPHPのデメリットはなさそうですが、
> 何か考えられるでしょうか?

CGI(Perl)の場合、suEXEC が実装可能です。
PHPの場合、CGI用として動作させる場合、suEXECが有効ですが、
スクリプトでは、suEXECが使えない。
よって、PHPスクリプトでファイルを作成した場合
ファイルの所有者は、Apacheの実行ユーザ所有になってしまいます。
この場合、URLから直接ファイルを閲覧できるため、htaccessで制限するか
データベースとの連携で回避します。

余談ですが、アクセスが集中する(更新頻度が低い)のファイルは、
C言語で書き、その他の所は、PHPまたはPerlを使うところがあります。
やはり、どのスクリプトよりもC言語の方が負担なく速いので。(処理内容にもよります


PHPでサーバに影響が出た方や話を聞いた方おられますか?

No.16912 投稿時間:2004年07月30日(Fri) 01:31 投稿者名:みの URL:

追記です。
今調べた、書籍によると、PHPは
スクリプトの実行部で致命的なエラーが発生すると、
(理論的には)webサーバもろとも異常終了すると書かれてありました。

本当にそんなことってあるのでしょうか?

PHPでサーバに影響が出た方や話を聞いた方おられますでしょうか?


少なくとも手放しに「早い、負荷少ない、だからPHP」とは言えない気がします。

No.16913 投稿時間:2004年07月30日(Fri) 02:41 投稿者名:アクア URL:

> PHPだと、サーバがおかしくなることもないですよね?
> それに早いし。サーバの負荷ないし。
> こう考えるとCGIと比べたPHPのデメリットはなさそうですが、
> 何か考えられるでしょうか?

私自身も比較的新しい技術であるPHPはあまり詳しくないのですが
「早い、負荷少ない」に関しては以下のような解説、見方もあります。
http://homepage3.nifty.com/hippo2000/perltips/phpperl.htm
上記文書は飽くまでPerlを使いこなしている著者が
PerlによるCGIでデータベース系モジュールを利用したベンチマークの比較ですので
参考程度にしかならないとは思いますが、
それなりに公平な立場で比較していると思われるため
少なくとも手放しに「早い、負荷少ない、だからPHP」とは言えない気がします。

> スクリプトの実行部で致命的なエラーが発生すると、
> (理論的には)webサーバもろとも異常終了すると書かれてありました。

これに関しても私自身がPHPの知識に疎いため
どういったときに起こりうるか、まではわかりませんが
mod_phpによりApacheが内部的にPHPを呼び出すのと同様、
Perl/CGIであってもmod_perlを使ったら同じ現象になる可能性はあるのかもしれません。
たいていのレンタルサーバーのPerl/CGIは
外部プロセスとしてPerlを起動する設定にされていると思われるため
Webサーバー自体に直接影響を与える可能性が少ないだけなのではないかと。
でもいわゆるゾンビプロセスとして残る可能性もあるので
どっちにしろサーバー全体として見ればいい状態ではないと思いますが…。

さらにPerl/CGIだろうとPHPだろうとパーミッションの設定に関しては同じことが言えるので
ソース自体に問題がなくても設置方法がまずければ
サーバー自体に影響を与えてしまう可能性が十分にあり得ます。

こう言ってしまってはなんですが、このような観点から
上記のように一般論(?)を元にしてPHPの方がよさそうだから…という理由では
私が先の投稿で提示したようにサーバーでどういったことが起こりうるかということを
根本的に理解していない(or 理解しようとすらしていない)といった意味で
本来であればあまりよいことだとは思えません。
(と言っても多くの人は多分気にしていないだろうことも前に述べた通りです)

ただ、現実的にはレンタルサーバーの管理者側も
これらの危険性をある程度認識した上で提供・対策・管理をしていると思いますので
みのさんが出来る限りの知識を身につけてやれるだけの対策をしていて
故意にサーバーに影響を与えるようなことをしていなければ
少なくとも最初の投稿にあったような「賠償責任」を問われることはまずないと思われます。
多分、そのような状況になったときはみのさん個人に責任があると言うより
サーバーの管理体制がずさんなだけ、という結論になるでしょう(笑)


たとえ何であろうと誤ったスクリプトを実行すればサーバーに負担をかけます。

No.16914 投稿時間:2004年07月30日(Fri) 03:20 投稿者名:通りすがり URL:

> 追記です。
> 今調べた、書籍によると、PHPは
> スクリプトの実行部で致命的なエラーが発生すると、
> (理論的には)webサーバもろとも異常終了すると書かれてありました。
>
> 本当にそんなことってあるのでしょうか?
>
> PHPでサーバに影響が出た方や話を聞いた方おられますでしょうか?

たとえ何であろうと誤ったスクリプトを実行すればサーバーに負担をかけます。
結果、サーバーダウン等はよくある話です。
有料レンタルの場合、賠償問題にも発展することもあります。


ローカルでテストしてからアップするのが大原則。

No.16915 投稿時間:2004年07月30日(Fri) 04:55 投稿者名:reboot URL:

perl、php のスクリプトエラーによるサーバに与える負荷に違いはないのでは。

> サーバがおかしくなるようなコードを書かない限り、おかしくはならないと思うのですが…
人間には間違いというものがつきものですからね。うっかりミスで無限ループ
になってしまうケースも無きにしも有らずです。

基本的に CGI は自分のPCで動作を試せる環境を作り、そこで動作確認して
からサーバにアップすること。これが大原則です。
例え自宅サーバでも、自分以外に利用者がいる場合は必ず踏んだ方がよい手順
だと思います。

※ Windows で試す場合はファイルロックの設定で symlink 関数を使用した
設定にしていると、掲示板など投稿できませんので、その時は設定を変えて
投稿テストをしてみましょう。

また、サーバをおかしくする原因に負荷の高いCGI、例えばゲームとかアクセス
解析CGIの使用があげられると思います。これらを禁止しているレンタルサーバ
も多いです。

以前借りていたサーバの利用者で、高負荷のアクセス解析CGIを自サイトの全ての
ページに設定している人がいました。そのレンタルサーバの利用者の為の掲示板で
その人がそのことを書いたもんだから、他の利用者から総攻撃を受けていました。(^^;)


ローカルでは大丈夫で、サーバでおかしくなるということは?

No.16922 投稿時間:2004年07月30日(Fri) 12:35 投稿者名:みの URL:

> ただ、現実的にはレンタルサーバーの管理者側も
> これらの危険性をある程度認識した上で提供・対策・管理をしていると思いますので
> みのさんが出来る限りの知識を身につけてやれるだけの対策をしていて
> 故意にサーバーに影響を与えるようなことをしていなければ
> 少なくとも最初の投稿にあったような「賠償責任」を問われることはまずないと思われます。
> 多分、そのような状況になったときはみのさん個人に責任があると言うより
> サーバーの管理体制がずさんなだけ、という結論になるでしょう(笑)

>基本的に CGI は自分のPCで動作を試せる環境を作り、そこで動作確認して
>からサーバにアップすること。これが大原則です。

ということは、CGIにしろPHPにしろサーバをクラッシュさせることはありうる、ということですね?

もちろんローカルで試してから、サーバにアップするのは当然なのですが、
ローカルでは大丈夫で、サーバでおかしくなるということは、
コード以外の作用でサーバに影響を与えるということになるのでしょうか?
パーミッションなど。。。

こう考えてもると、人間がする以上言語、サーバ知識が万全でも、
サーバに全く影響を与えないということは不可能なんでしょうか?


通常使っていてサーバに危害が及んだ場合、任意じゃない限り大丈夫です。

No.16923 投稿時間:2004年07月30日(Fri) 13:42 投稿者名:ラリ URL:

> もちろんローカルで試してから、サーバにアップするのは当然なのですが、
> ローカルでは大丈夫で、サーバでおかしくなるということは、
> コード以外の作用でサーバに影響を与えるということになるのでしょうか?
> パーミッションなど。。。

> こう考えてもると、人間がする以上言語、サーバ知識が万全でも、
> サーバに全く影響を与えないということは不可能なんでしょうか?

何もあせる必要はないですが・・。

通常のプログラムさえ組んでいれば、サーバに危害を与えることはないです。
それほどやわなつくりではありませんので(サーバ
ただし、特殊なプログラムなどの場合・・、例えばCGI上からユーザを発行する
プログラムや、サーバ部分のプログラムを書き加えるものなどは、上記のサーバに
影響を与えるプログラムになります。(永久ループなど負荷を与えるミスプログラムは気をつけてください。

まあ、通常レンタルサーバでは使える機能が制限されていますので、あまり気に
なさらずに使うのがいいと思います。
損害賠償うんぬん書いていますが、契約上記載が必要で、まあお約束の範囲です。
通常使っていてサーバに危害が及んだ場合、任意じゃない限り大丈夫です。


利用者が何らかの形でコードを見られることは可能なのでしょうか?

No.16968 投稿時間:2004年08月03日(Tue) 14:50 投稿者名:みの URL:


> まあ、通常レンタルサーバでは使える機能が制限されていますので、あまり気に
> なさらずに使うのがいいと思います。
> 損害賠償うんぬん書いていますが、契約上記載が必要で、まあお約束の範囲です。
> 通常使っていてサーバに危害が及んだ場合、任意じゃない限り大丈夫です。

ということはレンタルサーバレベルでは、メールフォームやショップフォームなどの簡単なソフトなら
それ程大ダメージを与えることはないということですね。

ちなみに自分で作ったPHPやCGIのソフトをサーバに設置して、
利用者が何らかの形でコードを見られることは可能なのでしょうか?

つまりコードを見られることは、そのコードを盗まれることになります。

セキュリティコードを作成する必要があるのでしょうか?


PHP or Perl/CGIのソースを見られる可能性。

No.16972 投稿時間:2004年08月03日(Tue) 23:48 投稿者名:アクア URL:

> ちなみに自分で作ったPHPやCGIのソフトをサーバに設置して、
> 利用者が何らかの形でコードを見られることは可能なのでしょうか?
>
> つまりコードを見られることは、そのコードを盗まれることになります。

サーバーの設定にもよりますが
通常、PHPやPerl/CGIが利用可能とされているサーバーの場合、
拡張子がphpやcgiであればHTTPサーバー(Apache等)が
「PHPやPerlで処理された結果」をクライアント(主にブラウザ)に返すハズなので
ソース自体が見られてしまうということはないと思います。

ただし、例えばPerl/CGIでよく使う関数や定義等を拡張子pl等で別ファイルにまとめてあり、
Perl/CGI本体ではuse/requireして使うような作りにしてあったとして
拡張子plに対して前述のようなHTTPサーバーとしての関連付け設定がされていなかった場合、
なんらかの方法でそのplファイル名がわかってしまうと
直接ダウンロードされてしまう可能性はあります。
なのでフリーのPerl/CGIではそのように共通部分を別ファイルにまとめてあって
それ単体ではCGIとして動作しない(標準出力に結果を返さない)ものであったとしても
わざと拡張子をcgiにしておく、といった対策をしているものが見受けられますね。
こうしておけばもしそのファイルにブラウザから直接アクセスしたとしても
Perl/CGIと見なされてPerlで処理される→でもHTTPヘッダが出力されない
→ブラウザにはInternal Server Error等の結果が出るだけ
で済むと思うので。

また、PHPやPerl/CGIの場合、
コンパイルされていない生ソース(スクリプト)がサーバー上に置いてあるワケですから
・suEXEC等がサポートされていない等の理由からその他ユーザーに対しても読み取り権をつけてある
・ユーザー用ホームページディレクトリ自体も適切なパーミッション設定がなされていない
といったような状況の場合、同じサーバーを利用している別ユーザーが
他人のホームページディレクトリ内のファイル内容を表示するようなPHP or CGIを作ったり、
あるいはもっと単純に(もし許可されていれば)直接リモートログインしてしまえば
簡単にソースを見られてしまう可能性はあります。

C/CGI等であれば上記のような危険性はだいぶ減るかと思いますが
やはり最終的にはサーバーではどのような仕組みでPHP or CGIが実行されるのか、
その対象サーバーにおける本当に適切なパーミッション設定とはどういうものか、を
みのさん自身がご自分でもっと研究なさる必要がある気がします。
他の方々もおっしゃっているように
レンタルサーバーは管理人によってそれなりの危険性を考慮した対策がなされているハズですし、
その上でさらにセキュアな状態にするにはどうすればいいのか、は
それぞれのレンタルサーバーの設定を踏まえてみのさんが試行錯誤すべきものであり、
ここで全ての可能性を追求した回答を求めるのは難しいと思います。
(まぁそのくらいのことは理解しておられると思いますが念の為)


|目次|掲示板|過去ログ目次|▲頁先頭|