傳入請求的XML文件需要驗證。一個要求是,由於可能的DoS攻擊,完全防止字符引用。如果我配置SAXParserFactory
象下面這樣:Java SAX解析器,如何完全防止字符引用? (DoS攻擊)
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
那麼parer仍然解決100.000實體擴展。
The parser has encountered more than "100.000" entity expansions in this document; this is the limit imposed by the application.
防止外部引用是通過EntityResolver
完成的,它工作正常。但是,我如何防止字符引用?
但在RESTful服務的情況下,它根據FIFO處理請求。如果一個請求需要花費更長時間的實體擴展,所有其他請求都會被延遲。 這不是一種Dos嗎? –
如果一個XML文件包含大約10^7個實體字符,則處理過程需要幾分鐘時間,直到發生java.lang.OutOfMemoryError:Java堆空間。 –
什麼是「實體角色」?我懷疑你使用的是關於實體引用和字符引用的錯誤術語,因此我們正在交叉討論。字符引用格式爲「 」或「 」,並且不會導致網絡流量或顯着的性能開銷。 –