ブラウザからサーバ上のEXEを実行するにはどうするの?
ブラウザからサーバ上のEXEを実行するのは意外と難しい!
WEBサイトをプログラムしていると、Perlでは簡単にできることが今使っているプログラム言語だとできない、または複雑なコーディングが必要といったことがたまにでてきます。
IIS環境でASPを利用している場合は、下記のように記載することでPerl言語を利用できます。
<script language="PerlScript" runat="Server">
sub getHostName{
local($addr) = @_;
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
if ($host eq "") { $host = $addr; }
return $host;
}
</script>
プログラムから利用する場合は、getHostNameを呼び出すことにより、Perlプログラムを利用できます。
つまり、他の言語で関数を定義し、その関数を呼び出すことになります。
phpの場合は下記のような方法で使えます。
<!--?php
// Perlスクリプトの実行
$output = shell_exec('perl path/to/script.pl');
echo $output;
?-->
perl path/to/script.pl
の部分で実際のPerlスクリプトを指定し、その結果をPHPに渡すことができます。
なお、セキュリティ上のリスクがあるため、ユーザー入力を含む動的なPerlコマンドを実行する場合は、コマンドインジェクションの危険性を考慮して、十分なエスケープ処理が必要です。
コマンドインジェクションは最近あまり目につきませんが、WEBサーバなどのログを見ると、今でもコマンドインジェクションを狙った攻撃が多数みられます。
エスケープ処理は忘れないようにしましょう。