問題タブ [jexl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JEXL 割り当てを無効にする方法は?
ユーザーがJEXL式を入力できるアプリケーションがあります。これらは検索フィルターとして使用されます。ユーザーが行うよくある間違いは、"A=5" のように記述して、変数 A に値 5 が含まれる場合にのみフィルターが true であると期待することです。
はい、その通りです。= 演算子は割り当てであり、ユーザーは比較のために == を使用する必要がありました。正規表現 [^=]=[^=] に一致する表現を拒否するなどの回避策も、 A=="foo=bar" のような文字列を比較できないため、解決策ではありません。
ランタイム構成を介して JexlEngine から代入演算子を削除して、解析中に例外をスローする可能性はありますか? または、代わりに JexlExpression に代入が含まれていることがわかりますか?