CGI/SSIのご利用方法、および、ご利用時の注意点をお知らせいたします。CGI/SSIプログラムの設置により、サーバーのダウンやセキリュティホールが発生する危険性がありますので、安全な運用にご協力を宜しくお願い致します。
CGIについて(Windows共用/専用サーバー)
Windows共用/専用サーバーでは、Perl言語によるCGIプログラムがご利用可能です。FastCGIによるPHP言語もご利用可能です。
CGIの動作するディレクトリについて
CGIプログラムは、すべてのディレクトリで利用可能です。
CGIの動作する拡張子について
拡張子として .cgi がご利用頂けます。別の拡張子でCGIプログラムを動作させることはできません。なお、CGIの実行ユーザーは、お客様のユーザーになります。
CGIプログラムのパーミッションについて
CGIプログラムを動作させるために、パーミッションの設定の必要はありません。
一般的に、CGIプログラムのパーミッションとして、775や755を推奨している場合がありますが、Windows共用/専用サーバーでは、OSがWindowsのため、一般的なLinuxサーバーのようなパーミッション(ファイル権限)の設定をする必要がありません。CGIプログラムはお客様のユーザーで実行されますので、標準でCGIプログラムからファイルに書き込みを行うことができ、ディレクトリやファイルの権限の変更は不要です。
CGIからメールを送信する方法
CGIからメールを送付する場合は、NET::SMTPモジュールを利用してください。Linuxサーバーで一般的なSendmail機能(sendmailコマンド)は利用できません。
メール送信の際、SMTPサーバー名は「localhost」、ポート番号は「25番ポート」をご利用下さい。外部のSMTPサーバーはご利用できませんのでご注意ください。
フォームの文字列を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プログラムの負荷について
共用サーバーでは、非常にサイズの大きなスクリプト、メモリを大量に消費するスクリプトは、他のお客様のご迷惑になりますので、ご遠慮ください。
フォームの内容の表示について
掲示板など、ユーザーが書き込んだ内容を、HTMLとして出力するタイプのCGIプログラムでは、必ず タグを禁止、または、制限してください。
その他にも、他のWebサイトへ不正なコマンドを実行させてしまう「クロスサイトスクリプティング」や、データベースに不正にアクセスされてしまう「SQLインジェクション」など様々なセキュリティ脆弱性が発生する可能性がありますのでCGIの設置の際にはご注意ください。
ご利用いただける追加モジュール
Windows Server 2022/2019/2016 のPerlモジュール一覧(主なものを抜粋)
Algorithm::C3 Algorithm::Diff Archive::Tar Archive::Zip B::Debug B::Hooks::EndOfScope B::Keywords Bit::Vector CGI Capture::Tiny Carp::Clan Class::Accessor Class::C3 Class::Data::Inheritable Class::Factory::Util Class::Inspector Class::Load Class::Load::XS Class::Singleton Clone Compress::Raw::Zlib Config::Perl::V Config::Tiny Convert::NLS_DATE_FORMAT DBD::CSV DBD::ODBC DBD::Oracle DBD::Pg DBD::SQLite DBI Data::Dump Data::OptList Date::Calc DateTime DateTime::Event::Recurrence DateTime::Format::Builder DateTime::Format::Duration DateTime::Format::ISO8601 DateTime::Format::Mail DateTime::Format::MySQL DateTime::Format::Natural DateTime::Format::Oracle DateTime::Format::Pg DateTime::Format::Strptime DateTime::Format::Sybase DateTime::Format::W3CDTF DateTime::Locale DateTime::Set DateTime::TimeZone Devel::GlobalDestruction Devel::NYTProf Devel::OverloadInfo Devel::PPPort Devel::StackTrace Digest::HMAC Digest::SHA Digest::SHA1 Dist::CheckConflicts Email::Address Encode Encode::Locale Eval::Closure Exception::Class Exporter::Tiny ExtUtils::CBuilder ExtUtils::Config ExtUtils::Constant ExtUtils::Helpers ExtUtils::Install ExtUtils::InstallPaths ExtUtils::MakeMaker ExtUtils::PL2Bat ExtUtils::ParseXS File::Copy::Recursive File::Fetch File::HomeDir File::Listing File::Next File::Path File::ShareDir File::Which Filter::Simple GD GD::Graph GD::Text Getopt::Long Getopt::Long::Descriptive HTML::Form HTML::Parser HTML::Tagset HTML::Template HTML::Tree HTTP::Cookies HTTP::Daemon HTTP::Date HTTP::Message HTTP::Negotiate IO::HTML IO::Socket::IP IO::Socket::SSL IO::String IPC::Cmd IPC::Run3 Importer JSON JSON::Any JSON::MaybeXS Jcode LWP::MediaTypes LWP::Protocol::https List::MoreUtils List::MoreUtils::XS List::Util Locale::Codes MRO::Compat Math::BigInt Math::BigInt::FastCalc Math::BigInt::GMP Math::BigRat Math::Prime::Util Math::Prime::Util::GMP MinGW Module::Build Module::Build::Tiny Module::CoreList Module::Implementation Module::Pluggable Module::Runtime Module::Runtime::Conflicts Moose MooseX::Getopt MooseX::Role::Parameterized Mozilla::CA Net Net::HTTP Net::Ping Net::SSLeay Net::Telnet PPI PPIx::Regexp PPIx::Utilities PPM::Repositories Package::Constants Package::DeprecationManager Package::Stash Package::Stash::XS Params::Classify Params::Util Params::Validate Params::ValidationCompiler Path::Tiny Perl Perl::Critic Readonly Role::Tiny SQL::Statement Scope::Guard SelfLoader Sereal Sereal::Decoder Sereal::Encoder Set::Infinite Shell::Command Socket Specio Sub::Exporter Sub::Exporter::Progressive Sub::Identify Sub::Info Sub::Install Sub::Name Sub::Quote Sub::Uplevel Task::Weaken Tcl Term::ReadKey Term::ReadLine::Perl Term::Table Test2::Suite Test::Differences Test::Exception Test::Fatal Test::Harness Test::Simple Text::Autoformat Text::CSV_XS Text::Diff Text::Glob Text::Reform Time::HiRes Time::Piece Tkx Try::Tiny URI Unicode::Collate Variable::Magic Version Version::Requirements WWW::Mechanize WWW::RobotRules Win32::API Win32::AuthenticateUser Win32::Clipboard Win32::Console Win32::Console::ANSI Win32::Daemon Win32::EventLog Win32::File Win32::FileSecurity Win32::IPC Win32::Internet Win32::Job Win32::NetAdmin Win32::NetResource Win32::ODBC Win32::OLE Win32::PerfLib Win32::Pipe Win32::Process Win32::Registry Win32::Service Win32::ShellQuote Win32::Shortcut Win32::Sound Win32::TieRegistry Win32::WinError Win32API::Net Win32API::Registry XML::Parser XML::Simple YAML::LibYAML ap-iis-config boolean dmake libwww::perl mylib namespace::autoclean namespace::clean threads threads::shared
この他、ActivePerl本体に標準添付されているモジュールがご利用可能です。
SSIについて
Windows共用/専用サーバーでは、拡張子が .stm .shtm .shtml のファイルで、SSIが利用できるように設定されています。
利用できるコマンド
利用できるSSIコマンドは以下の通りです。execコマンドは利用できません。
- include
- fsize
- echo
- config
- flastmod