迅速で汚い、安全でない解決策として、ノードをサーバーにインストールし、PHP を呼び出しexec()
てコードを検証することができます。
ドキュメントによると、exec は次のように定義されています。
string exec ( string $command [, array &$output [, int &$return_var ]] )
ノードでは、-e
フラグを使用して JavaScript 文字列を評価できます。コマンドラインを使用した例:
> node -e 'invalid javascript'
SyntaxError: Unexpected identifier
> $?
-bash: 8: command not found # <-- return status!
これを PHP の exec と結び付けると、次のようになります。
<? php
$userJavaScript = getUserJavaScriptSomehow();
exec("node -e '" + $userJavaScript + "'", $output, $return_var);
if ($return_var !== 0) {
// something went wrong with parsing it.
}
?>
これは恐ろしい解決策であることに注意してください。ユーザーが任意のコードを実行できることを考慮して、クライアント側で JavaScript を検証し、サーバー側で検証を行うことを忘れたほうがよいでしょう。ファイル アクセスや無限ループなどから保護する必要があります。