AEM元件和範本提供強大的工具套件。 開發人員可使用這些功能,為網站業務使用者、編輯和管理員提供調整其網站以適應不斷變化的業務需求(內容靈活性)的功能,同時保留網站的統一版面配置(品牌保護)。
對於負責網站或一組網站(例如全球企業的分支辦公室)的人來說,一個典型的挑戰是在其網站上引入新類型的內容演示。
假設有必要將新聞清單頁面新增至網站,列出已發佈之其他文章的摘要。 頁面的設計和結構應與網站的其他部分相同。
應對這種挑戰的建議方法是:
這說明此方法如何讓網站的貢獻使用者和管理員能夠快速回應業務需求,而不需要開發團隊的參與。 其他方法,例如建立新模板,通常是一項代價高昂的工作,需要變革管理流程和開發團隊的參與。 這使得整個過程更長,成本也更高。
因此,AEM型系統的開發人員應使用:
在大部分的常見專案中,開發人員適用的下列一般規則是有意義的:
建立自己的元件或自訂現有元件時,最簡單(最安全)的做法是重複使用現有定義。 同樣的原則也適用於AEM內的其他元素,例如錯誤處理常式。
您可以複製並覆寫現有定義來完成此操作。 換言之,將定義從 /libs
to /apps/<your-project>
. 此新定義,位於 /apps
,可根據您的需求更新。
請參閱 使用覆蓋 以取得更多詳細資訊。
例如:
這涉及覆蓋元件定義:
在中建立新元件資料夾 /apps/<website-name>/components/<MyComponent>
複製現有元件:
例如,要自定義文本元件副本:
/libs/foundation/components/text
/apps/myProject/components/text
此情況涉及覆蓋servlet:
在存放庫中,複製預設指令碼:
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
您 不能 改變 /libs
路徑。
這是因為 /libs
下次升級執行個體時即會覆寫(而當您套用Hotfix或Feature Pack時,很可能會覆寫)。
針對設定和其他變更:
/libs
to /apps
/apps
正確使用時,JCR查詢是功能強大的工具。 這些規則適合:
真正的一般使用者查詢,例如內容的全文搜尋。
需要在整個儲存庫中找到結構化內容的場合。
在這種情況下,請確保查詢僅在絕對需要時運行,例如元件激活或快取失效時(而不是工作流步驟、在內容修改時觸發的事件處理程式、篩選器等)。
JCR查詢絕不應用於純轉譯請求。 例如,JCR查詢不適用於
若要轉譯內容,請使用內容樹狀結構的導覽存取權,而非執行JCR查詢。
如果您使用 查詢產生器,您會使用JCR查詢,因為查詢產生器會在標題下產生JCR查詢。
也值得參考 安全檢查清單.
您應使用使用者工作階段,而非管理工作階段。 這表示您應使用:
slingRequest.getResourceResolver().adaptTo(Session.class);
跨網站指令碼(XSS)可讓攻擊者將程式碼插入其他使用者檢視的網頁。 惡意Web用戶可利用此安全漏洞繞過訪問控制。
AEM會套用在輸出時篩選所有使用者提供的內容的原則。 在開發和測試期間,防止XSS的優先順序最高。
此外,Web應用程式防火牆,例如 Apache的mod_security,可提供對部署環境安全性的可靠中央控制,並防止先前未偵測到的跨網站指令碼攻擊。
隨AEM提供的范常式式碼本身可能無法抵御這類攻擊,且通常需仰賴Web應用程式防火牆的要求篩選。
XSS API速查表包含您需知的資訊,以便使用XSS API並讓AEM應用程式更安全。 您可以在此處下載:
XSSAPI速查表。
至於任何網際網路應用程式,請務必在傳輸機密資訊時
這適用於對系統保密的資訊(如配置或管理訪問),以及對其用戶保密的資訊(如其個人詳細資訊)
可針對AEM自訂錯誤頁面。 建議您這麼做,這樣執行個體就不會在內部伺服器錯誤上顯示Sling追蹤。
請參閱 自定義錯誤處理程式顯示的錯誤頁 以取得完整詳細資訊。
由於AEM可以存取大量檔案,因此建議將 開啟Java進程的檔案 為AEM明確設定。
為了盡量減少此問題的發展,應確保盡快(有意義地)正確關閉任何開啟的檔案。