1

組み込みの esapi バリデーターを使用しています。次のように定義されています。

Validator.SafeString=^[.\\p{Alnum}\\p{Space}]{0,1024}$

私は正規表現にあまり詳しくありません。いくつか読んだ後、この式が英数字とスペースに一致していることを理解しました。

この式を拡張して、*、-()&+、および / を含めたいと思います。私は次のことを試みましたが、うまくいかないようです

Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,-()&+]{0,1024}$
4

2 に答える 2

2

ハイフンを最後に付ける必要があるのは、そうしないと、ハイフンが単一の文字ではなく範囲として機能するためです。

Validator.SafeString=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$
                                                  ^--- here

更新:次のavgvstvsコメント:

1.7 以降では、\w\s を機能させるために正規表現の先頭にフラグ (?u) を追加する必要があります。

あなたも試すことができます:

Validator.SafeString=(?u)^[.\\w\\s*,()&+-]{0,1024}$
于 2015-03-23T18:34:03.260 に答える
1

validation.properties に別のエントリを作成します。OWASP の目的SafeStringは、すべてのアプリケーションに保証された安全な文字列を提供することです。Javascript でコードとして解釈できる文字を受け入れることでSafeString、API が意図したとおりの . SafeStringアプリケーションの他の部分が当初の意図どおり に使用されている場合、悲惨な結果を招く可能性があります。

@ Fede の最初の正規表現を使用しますが、次のように対処します。

Validator.SomethingElse=^[.\\p{Alnum}\\p{Space}*,()&+-]{0,1024}$

そして、次のように呼び出します。

ESAPI.validator().isValidInput(CONTEXT, input, "SomethingElse", MAX_FIELD_LENGTH, true);

「true」マークは、文字列が にできるかどうかに対応することに注意してくださいnull

于 2015-03-24T14:40:49.297 に答える