ユーザーが JavaScript を入力してアプリのロジックを指定できるようにすることを考えています。JavaScript はブラウザーに入力されて表示されますが、最初にサーバー側で保存され、検証されます。
これにより、明らかなセキュリティへの影響が生じます。
理想的には、JavaScript 言語のサブセットのみを許可したいと考えています。直感的には、オプトイン アプローチ (許可するものを指定し、それ以外はすべて許可しない) の方が、オプトアウト アプローチ (許可しないものを指定する) よりも安全に思えます。
私が見た多くのソリューションはクライアント側です。JavaScript が無効な場合にユーザーにフィードバックを提供し、サーバーに一度だけ保存できるため、サーバー側のソリューションの方が私のニーズには適していると思います。それは「きれい」です。
また、JavaScript を解析していくつかのチェックを実行するために何かを配置すると便利です。たとえば、ユーザーにいくつかの変数を提供し、初期化されていない変数を使用していないことを確認したり、コードが期待される形式で何かを返します。サンドボックス ソリューションは少なくともこれを妨げるべきではありませんが、正規表現だけでなくコードを解析することで機能し、構文をチェックするために独自のフックを配置できる場合、積極的に役立つ可能性があります。
Google Caja は私のやりたいことができるように見えますが、あまり深く掘り下げていません。
どのようなアプローチをお勧めしますか?
オープンソース ソリューションは優れています。私は自分のコードを書くことを気にしませんが、これは最初から適切に解決するのは簡単ではない問題のようです。