私がやっていることは、真理値表ジェネレーターを作成することです。ユーザーが提供する関数 (例: a && b || c
) を使用して、JavaScript に a、b、c のすべての組み合わせを関数の結果とともに表示させようとしています。
ポイントは、ユーザーが提供する関数を解析する方法が完全にはわからないということです。つまり、ユーザーは基本的に必要なものすべてを関数に入れることができ、それにより私のウェブサイトが変更されるなどの影響が生じる可能性があります.
eval()
まったく安全ではありません。どちらも ではありません。どちらもnew Function()
、ユーザーが関数内の好みに合わせてすべてを配置できるためです。通常JSON.parse()
は の優れた代替手段ですがeval()
、関数は JSON には存在しません。
a && b || c
そのため、悪意のあるコード文字列を無視しながら、カスタムのブール演算子文字列を関数のように解析する方法を考えていました。関数内ではブール演算子 ( &&, ||, !
) のみを使用できます。