Не существует прямого способа предотвратить расширение сущности и, таким образом, предотвратить атаку миллиарда смеха.Это связано с тем, что миллиарды атак смеха могут быть правильно сформированным XML, а XercesDOMParser
является довольно строгой реализацией DOM.Однако вы можете предотвратить атаку на миллиард смеха в Xerces, добавив SecurityManager
.
SecurityManager sm;
sm.setEntityExpansionLimit(100);
parser->setSecurityManager(&sm);
. Если вы добавите это в свой код, Xerces выдаст SAXParseException
, когда анализатор расширится больше, чемколичество установленных вами сущностей, в данном случае 100. Это предотвратит миллиард смеха.