私は、ユーザーがJavaScriptを入力してアプリケーションでロジックを指定できるようにしています。 JavaScriptはブラウザに入力されて表示されますが、まず保存され、サーバー側で検証されます。サーバーサイドJavaScriptのクリーンアップまたはサンドボックス?
これは明らかなセキュリティ上の影響をもたらします。
理想的には、JavaScript言語のサブセットのみを許可したいと考えています。直感的には、許可されるものを指定し、他のすべてを許可しないオプトインアプローチは、禁止されているものを指定するオプトアウトアプローチよりも安全です。
私が見たソリューションの多くはクライアント側です。私はJavaScriptが無効であればユーザにフィードバックを与えることができるので、サーバ側のソリューションが自分のニーズに合っていると思います一度それは "クリーン"のサーバー上で。
また、JavaScriptを解析していくつかのチェックを実行することもできます。たとえば、ユーザーにいくつかの変数を提供し、初期化されていない変数を使用していないことを確認したり、またはコードが期待される形式で何かを返すことを示します。サンドボックスソリューションは、少なくともこれを妨げないはずですが、正規表現だけでなくコードの解析でも機能するなら、積極的に役立つ可能性があります。独自のフックを入れて構文を確認することができます。
Google Cajaは私の望むように見えるかもしれませんが、私はそれに非常に浸っていません。
どのようなアプローチをお勧めしますか?
オープンソースのソリューションは素晴らしいです。自分のコードを書いても構いませんが、これは最初から正しく解決するための重要な問題ではないようです。