cgi/ssi

個人法人共用マネージドVPS専用代理店

CGI/SSIのご利用方法、および、ご利用時の注意点をお知らせいたします。CGI/SSIプログラムの設置により、サーバーのダウンやセキリュティホールが発生する危険性がありますので、ご協力を宜しくお願い致します。

CGIについて
CGIの動作するディレクトリについて

「SPPDレンタルサーバー」では、CGIプログラムはすべてのディレクトリで利用可能です。そのため、CGIのご利用に際して、.htaccess の記述など特別な設定は必要ありません。

CGIの動作する拡張子について

拡張子としては 標準で .cgi がご利用頂けます。アクセス制御ファイル (.htaccess) を用いれば、他の拡張子のファイルをCGIとしてご利用になることもできます。

例) .pl のファイルをCGIとして動作させたい場合

下記の内容の .htaccess ファイルをホームディレクトリにアップロードしてください。

AddHandler cgi-script .pl
CGIプログラムのパーミッションについて

CGIプログラムを動作させるにはファイルのパーミッションを適切に設定する必要があります。なお「SPPDレンタルサーバー」では、いわゆるsuExec機能は有しておりませんので、CGIの実行はお客様のユーザー権限ではなくnobodyユーザー権限として行われます。

「SPPDレンタルサーバー」では、CGIプログラムのパーミッションとして605を設定されることを推奨いたします。書籍等では775や755を推奨している場合がございますが、これらの属性は推奨できません。グループへのアクセス権を示す真中の数字を0以外にすると、共用サーバーでは、他のユーザーから閲覧・更新されてしまう場合があります。同様にデータファイルには、606を、HTMLファイルは、604を指定されることを推奨いたします。

プログラム言語について

CGIプログラムとしては、Perl5、Ruby、C、C++、シェルスプリクトなどがご利用頂けます。ただし、シェルスクリプトは、サーバーの負荷に影響を与えることがありますので、なるべく使用はお控え下さい。

ビジネス・パーソナルシリーズのうちOSがCentOS6/RHEL6系のプログラムのパス一覧
プログラム バージョン パス
perl 5.10.1 /usr/local/bin/perl、/usr/bin/perl  
Ruby 2.4.4 /usr/local/bin/ruby 
sh --- /bin/sh、/bin/bash
nkf 2.1.1 /usr/local/bin/nkf
sendmail /usr/lib/sendmail、/usr/sbin/sendmail
python 2.7.15 /usr/local/bin/python
php (cli版) 7.2.17 /usr/local/bin/php
php (CGI版) -- 利用できません。
ビジネス・パーソナルシリーズのうちOSがCentOS5/RHEL5系のプログラムのパス一覧
プログラム バージョン パス
perl 5.8.8 /usr/local/bin/perl、/usr/bin/perl  
Ruby 1.8.7 /usr/local/bin/ruby 
sh --- /bin/sh、/bin/bash
nkf 2.1.1 /usr/local/bin/nkf
sendmail /usr/lib/sendmail、/usr/sbin/sendmail
python 2.7.15 /usr/local/bin/python
php5 (cli版) ※1 5.3.29 /usr/local/bin/php
php4 (CGI版) ※2 4.4.9 /usr/local/php4/bin/php

※1 専用サーバー・マネージドVPSのお客様では、バージョンが異なる場合があります。

※2 専用サーバー・マネージドVPSのお客様で、モジュール版のphp5をphp4へダウングレードしている場合は、php4(cli版)が /usr/local/bin/php となり、php5(CGI版)が /usr/local/php5/bin/phpとなります。また、64bit版の場合は、php4(CGI版)は利用できません。

ご利用いただける追加モジュール
Perlの追加モジュール一覧 (ビジネス・パーソナルシリーズ)
モジュール名 OSがCentOS6/RHEL6系 OSがCentOS5/RHEL5系
Archive::Zip1.30 1.30
CGI3.51 3.50
CGI::Session4.43 4.43
Class::Accessor0.34 0.34
Class::Singleton1.4 1.4
Class::XPath1.4 1.4
Class:ErrorHandler0.01 0.01
Compress::Raw::Zlib2.030 2.030
Compress::Zlib2.021 1.42
Crypt::SSLeay0.57 0.57
DBD::Pg2.17.2 2.17.2
DBD::SQLite1.33 1.33
DBD::mysql4.019 4.019
DBI1.609 1.616
DBM::Dbase0.54 0.54
DB_File1.817 1.817
DateTime0.42 0.42
DateTime::Format::Mail0.3001 0.3001
DateTime::Format::W3CDTF0.04 0.04
DateTime::Locale0.35 0.35
DateTime::TimeZone0.74 0.74
Digest::MD52.51 2.51
Digest::SHA12.13 2.13
ExtUtil::MakeMaker6.55 6.54
File::Spec1.3 1.3
File::Temp0.22 0.22
File::Which0.05 0.05
GD::Barcode1.15 1.15
GD::Graph1.44 1.44
GD::Graph3d0.63 0.63
GD:Text0.86 0.86
HTML::Parser3.69 3.69
HTML::Tagset3.20 3.20
HTML::Template2.97 2.97
Image::Magick6.6.7 6.3.6
Image::Size3.230 3.230
Jcode2.07 2.07
LWP(libwww_perl)5.88 5.808
MIME::Base643.13 3.13
MIME::Lite3.01 3.01
MIMEtools5.427 5.427
Mail::CheckUser1.21 1.21
MailTools2.07 2.07
Module::Build0.2808 0.2808
Net::DNS0.47 0.47
Net::SSLeay1.35 --
Net::Trackback1.01 1.01
Params::Validate0.89 0.89
Pg2.1.1 2.1.1
SOAP::Lite0.71 0.71
Storable2.25 2.25
Task::Weaken1.03 1.03
Test::Manifest1.23 1.23
Time::Date1.20 1.20
URI1.56 1.56
XML::DOM1.44 1.44
XML::Elemental2.11 2.11
XML::Encoding2.08 2.08
XML::NamespaceSupport1.11 1.11
XML::Parser2.36 2.40
XML::RSS1.45 1.45
XML::RSS::Parser4.0 4.0
XML::RSSLite0.15 0.15
XML::RegExp0.03 0.03
XML::SAX0.96 0.96
XML::SAX::Expat0.40 0.40
XML::Sablotron1.01 1.01
XML::Simple2.18 2.18
XML::XPath1.13 1.13
XML::XSLT0.48 0.48
YAML::Tiny1.46 1.46
libxml_perl0.08 0.08

この他、Perl本体に標準添付されているモジュールもご利用可能です。

Rubyの追加モジュール一覧 (ビジネス・パーソナルシリーズ)
モジュール名 OSがCentOS6/RHEL6系 OSがCentOS5/RHEL5系
mysql-ruby利用不可 2.8.2
ruby-postgres利用不可 0.7.1
sqllite3-ruby利用不可 1.2.3
CGIからSendmailを呼び出してメールを送信する方法

CGIからSendmailを呼び出してメールを送信する場合、From: ヘッダーと、Errors-To: ヘッダー を記述してください。また、標準では、CGIからメールを送った場合のエラーメールの戻り先は当社の管理者となり、お客様宛には戻りませんが、Sendmailに-fオプションを付与することにより、ご指定メールアドレスにリターンメールが届くようにすることが可能です。

[例]
変更前:/usr/lib/sendmail staff@example.jp
                   ↓
変更後:/usr/lib/sendmail -freturn@example.jp staff@example.jp

※ この場合は、return@example.jpにメールが戻ります。
※ お客様の管理しているドメイン以外のメールアドレスを戻り先として設定することはできません。
フォームの文字列をCGIに渡す際のご注意

POSTまたはGETで入力されたクエリー文字列を、そのままシェルに渡さないようにお願い致します。シェルに渡すとは、Perlでは、system、exec系のコマンド、パイプを使ったオープン、バックスラッシュによるコマンド実行結果の取り込みなどを指します。

以下のようなPerlプログラムなどはセキュリティ上危険となります。


if ($ENV{'REQUEST_METHOD'} eq "POST") {
    read (STDIN,$str,$ENV{'CONTENT_LENGTH'});
}
else {
   $str=$ENV{'QUERY_STRING'};
}

@part=split('&',$str);
foreach $i (@part) {
    ($variable,$value)=split('=',$i);
    $value=~ tr/+/ /;
    $value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
    $cgi{$variable} = $value;
}


$query=`$cgi{'command'}`;
system ("$cgi{'command'}");

CGIプログラムの負荷について

共用サーバーでは、デーモンプロセスとして存在する高負荷プログラムの実行や、非常にサイズの大きなスクリプト、メモリを大量に浪費するスクリプトは、他のお客様のご迷惑になりますので、ご遠慮ください。

個人向けサービスでは、チャット・掲示板・ランキングのプログラムの利用に制限がございますので、これをお守りいただきますようお願いいたします。

場合により、CGIプログラムの緊急停止などの措置をとらせて頂く場合がございます。 ご利用規約の第7条、第14条をご覧下さい。

フォームの内容の表示について

掲示板など、ユーザーが書き込んだ内容を、HTMLとして出力するタイプのCGIプログラムでは、必ず タグを禁止、または、制限してください。例えば、掲示板やアンケートの入力フォームに

<!−−#exec cmd=”rm −R *”−−>

という書き込みがあり、掲示板のログをHTMLに出力した場合、掲示板を閲覧しただけで、サーバーのファイルが削除されてしまいます。Perlの場合、以下の方法などでタグを無効化できます。

if ($ENV{'REQUEST_METHOD'} eq "POST") {
    read (STDIN,$str,$ENV{'CONTENT_LENGTH'});
}
else {
   $str=$ENV{'QUERY_STRING'};
}

@part=split('&',$str);
foreach $i (@part) {
    ($variable,$value)=split('=',$i);
    $value=~ tr/+/ /;
    $value=~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;

    $value=~ s/</\&lt;/g;
    $value=~ s/>/\&gt;/g;

    $cgi{$variable} = $value;
}

その他にも、他のWebサイトへ不正なコマンドを実行させてしまう「クロスサイトスクリプティング」や、データベースに不正にアクセスされてしまう「SQLインジェクション」など様々なセキュリティ脆弱性が発生する可能性がありますのでCGIの設置の際にはご注意ください。

SSIについて

「SPPDレンタルサーバー」では、拡張子が .htmlと.shtml のファイルで、SSIが利用できるようになっております。アクセス制御ファイル(.htaccess) を利用すれば、これ以外の拡張子のファイルでSSIを利用することも可能です。

利用できるコマンド

利用できるSSIコマンドは以下の通りです。

  • exec cmd(なるべく使用はお控え下さい)
  • exec cgi
  • include
  • fsize
  • echo
  • config
  • flastmod