cgiの設置について
1:レンタルサーバーでcgiファイルはcgi-binフォルダ、
htmlファイルや画像はhttpdocsに設置するように指定されています。
セキュリティ上の理由とのことですが、
具体的にどういうセキュリティ上の危険があるのでしょうか?
2:httpdocsに設定を変更すればhtmlファイルとともにcgiファイルも置けるようです。
ただし、セキュリティ上の危険があるようです。
httpdocsフォルダにhtmlファイルや画像とcgiファイルを一緒に置くことによる
セキュリティ上の危険とは具体的にどのようなものですか?
3:cgi-binフォルダにcgiファイル、httpdocsフォルダにcssや画像ファイルをおいています。
SSL通信を行うとcgi部分しか表示されません。
通常のhttpだとcssも含め表示されます。
このような場合はhttpdocsフォルダにcgiファイル、cssファイル、画像等を一緒に置かないといけないのでしょうか?どうしたらお問い合わせフォームcgiをSSL通信できるようになりますか?
よろしくお願い致します。
環境によるため一概に言えないのでアバウトにですが。
httpdocs配下にユーザーがcgiを自由に設置できる場合、そのcgiにセキュリティホールがあると、攻撃コマンドをフォーム内に書くなどの方法で、状況が最悪なら
- httpdocs配下のディレクトリ・ファイル構成を全て読み出すことができる
- 攻撃プログラムやマルウェアを公開状態の任意の位置にアップロードして閲覧者を攻撃できる
- データベースを利用している場合、その中身も閲覧や操作ができる
- サイト全体や権限の書き換え、ログや閲覧者情報の盗聴なども容易になる
などなど、何でもござれの状態になり得ます。
こうなるとパーミッションなどは役に立ちません。
サーバー全体に被害が及ぶこともあります。
cgiが実行・操作できる範囲を限定するのは、
- cgi-binの外に攻撃範囲が及ばないようにするための一策となる(万全ではないけど)
- Apacheのデフォルト設定も同様のポリシー(動作範囲に明示的な許可を必要とする)で、アップデートの際にユーザー単位でのカスタマイズをせずに設置・更新ができる(今どきはカスタマイズは当然自動化できるでしょうが)
- サーバー管理者としては万一問題が発生した時に、cgi-bin配下だけを切り離しや停止する方が容易
といった利点があります。全てのユーザーが攻撃・対策の知識やプログラム実装に精通していない前提で、「一番レベルの低いユーザーに合わせて提供ルールを作る」会社もあります。
画像などが表示されない場合は、SSLのページ内で、imgタグやcss呼び出し部だけhttp://??からURL指定で書くと単純に解決できます。