2012-09-13 64 views
0

我使用ESAPI我的項目,並添加ESAPI配置目錄src/main/resources所以它複製到我的WAR文件(我從網上下載CloudBees的戰爭中,我可以看到它放入WEB-INF/classes/esapi/目錄)cloudbees&ESAPI - 我如何指向ESAPI目錄?

本地,我只是指出目錄的位置,所有的工作都很好,但在雲端上,它並不適合我。

爲了訪問它的屬性,ESAPI項目嘗試各種東西,包括檢查org.owasp.esapi.resources系統屬性,所以我下面的代碼添加到cloudbees-web.xml

<sysprop name="org.owasp.esapi.resources" value="WEB-INF/classes/esapi/" /> 

,我可以看到的是,系統屬性,是因爲在日誌下面的錯誤的發現:

Not found in 'org.owasp.esapi.resources' directory or file not readable: /var/genapp/apps/akld3873/WEB-INF/classes/esapi/ESAPI.properties 

所以它找到的系統屬性(因爲路徑是像我指定的),但是當它會查找其中的實際目錄和文件,我猜這個目錄不存在或不可讀。

我需要將它移動到別的地方嗎?在WEB-INF目錄裏面也許?設置不正確?我讀過其他人通過爲此目錄構建JAR來解決類似問題,但這似乎不是一個好的解決方案,必須有一個適用於cloudbees的簡單設置。

+0

我也試過:/tip-about/WEB-INF/esapi/ESAPI.properties但再次得到了:並非「組織發現.owasp.esapi.resources'目錄或文件不可讀:/var/genapp/apps/1xxx7/tip-about/WEB-INF/esapi/ESAPI.properties – TheZuck

回答

1

好吧,經過搜索和測試,我終於明白了。 CloudBees的部署你的Web應用程序到以下目錄:

staxcat/install/webapp.war/ 

的通知,這是一個相對路徑,這個路徑的前綴,連着它看起來是這樣的:

/var/genapp/apps/xxxxxxxx/staxcat/install/webapp.war/WEB-INF/esapi/ESAPI.properties 

所以,爲了得到ESAPI工作,我不得不設置在下面的CloudBees-web.xml中:

<sysprop name="org.owasp.esapi.resources" value="staxcat/install/webapp.war/WEB-INF/esapi" /> 

這將使ESAPI找到目錄,如果在你的項目,它位於下:

src/main/webapp/WEB-INF/esapi 

,你應該得到以下日誌行:

Found in 'org.owasp.esapi.resources' directory: /var/genapp/apps/xxxxxxxxx/staxcat/install/webapp.war/WEB-INF/esapi/ESAPI.properties 
1

設計ESAPI lib需要目錄訪問配置不是很靈活。 通用選項是使用ServletContext.getRealPath來解析此目錄的絕對文件系統路徑並將其傳遞給ESAPI。

另一個選擇是讓你有一些初始化代碼將WEB-INF/classes/esapi內容複製到一個臨時目錄中(使用java.io.temp系統屬性指向當前配置的應用程序的臨時目錄)和將ESAPI lib指向此路徑。

+0

我同意這個要求不靈活,但我會擁有現在就住它。感謝您的建議,我會看看並嘗試實施一個。 – TheZuck

+0

取消選中此答案,因爲它不能解決我的問題 – TheZuck

+0

@nicolas de loof ESAPI不需要它,使用該庫的實際意圖是您將複製源回購並自己構建它,將屬性文件設置爲唯一您的圖書館Maven期待它。當它們包含在ESAPI jarFile的類路徑中時,不需要目錄訪問。 – avgvstvs