由於消息中的消息屬性文件:HTML標記佔位符 - XSS潛在
message = Change relation <strong>{0}</strong> -> <strong>{1}</strong> to <strong>{2}</strong> -> <strong>{3}</strong>?
如果任何佔位符的內容是用戶的影響字符串,我需要到html爲了防止潛在的XSS(我通過在我的JSP模板中使用c:out
標記來做到這一點,我想我也可以使用spring:message
標記的htmlEscape屬性,但我認爲沒有區別)。
但是通過這樣做,我在郵件中標記損壞,從而導致輸出<strong>
等:
Change relation <strong>Peter</strong> -> <strong>Car</strong> to <strong>Carl</strong> -> <strong>Bus</strong>?
我已經讀線程這裏on stackoverflow但它並沒有解決XSS 。
我正在考慮這些選項:
1)只需從信息的屬性替換所有<strong>
標籤用單引號文件。那麼html轉義整個消息就沒有問題了,但是消息的特定部分略顯突出。
2)將消息拆分爲允許(JSP)模板中單獨標記的部分。爲了獲得正確的標記,這感覺很像工作。
我在這裏錯過了什麼嗎?哪種方法更好,還是有其他選擇?
編輯:沒有HTML轉義的消息是,就像我希望它是這樣的:
變化關係彼得 - >汽車到卡爾 - >總線?
因此,message.properties文件中的html標記正在呈現在模板中時呈現。
當轉義時,消息如上所示,向我顯示<strong>
標記而不是呈現它們。
你是說它會導致輸出:'<強>彼得< /強>'?就我所知,因爲你的「損壞的」例子與原始信息完全一樣。 – Gray
嗨,對不起,我編輯了我的問題,試圖澄清我的情況一些。 – SebastianRiemer
謝謝澄清。如果您查看HTML(查看源代碼),您會發現實際上,您將「<」發送給客戶端而不是「<」。所以,我相信我的答案仍然存在 - 讓我知道如果它不清楚或者我誤解了你的問題。 – Gray