2014-01-05 121 views
0

我開始使用ESAPI工作,但遇到問題。我正在嘗試創建一個示例規則(Validator.Single = [A-Z] $)。我驗證一個字符串是否只有一個大寫字符。在ESAPI驗證器中創建規則

我把Validator.Single = [AZ] $在validator.properties文件,但是當我在代碼中使用:

System.out.println(v.isValidInput("Single", "A", "Single", 1, true)); 

輸出告訴我

SecurityConfiguration for Validator.Single not found in ESAPI.properties. Using default: 
false 

,並返回我假的,而不是真的,因爲「A」是有效的字母。

任何人都知道我還需要做些什麼?或者我制定規則不好?

感謝您的回覆。

+0

請記住改變validation.properties ,在正則表達式語法'[AZ]'中只能在幾乎所有實現中使用ASCII大寫字母。 UNICODE字符將滑過此處。你可以使用'\ p {Lu}' – avgvstvs

+0

或者,如果你用'(U)'< - Java 1.7+ – avgvstvs

+0

給你的正則表達式加前綴,這仍然是個問題嗎? – avgvstvs

回答

0

Validator.Single=[A-Z]$

應該已經

Validator.Single=^[A-Z]$ 

中注意正則表達式的開始脫字符(^)的。你可以閱讀更多關於Java正則表達式在Lars'Java Regex Tutorial

+0

這不會導致OP的問題。 – avgvstvs

0

這裏的問題很可能是類路徑相關。在運行調用ESAPI的進程時,您是在告訴jvm您的屬性文件所在的位置,還是您要從源代碼編譯庫?

我沒有足夠的關於如何運行該代碼行,但我懷疑是你的esapi jar中有一個validation.properties文件,因此它沒有選擇你想要的文件。

但是在運行過程中,請確保以下屬性傳遞給JVM:

-Dorg.owasp.esapi.resources="<path_to_your_resources_directory>"

或者,如果編譯,確保你在src/main/resources