cgi/ssi

Win

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