La conversion d'un tableau d'octets représentant un fichier en chaîne en java est-elle un risque de sécurité?


Je protège le logiciel contre les attaques d'extension XML et je veux exécuter un fichier stocké sous forme de tableau d'octets via un XMLReader pour tester les boucles d'extension. Est-il sûr de simplement créer une chaîne à partir du tableau d'octets ou est-ce que cela ouvre mon logiciel à un tout nouveau domaine d'exploits possibles?

String xml = new String ( myByteArray );
Author: SMC, 2014-01-09

1 answers

Merci à tous ceux qui ont commenté.

Comme Raedwald l'a souligné, ce n'est pas nécessairement un problème de sécurité, mais les données peuvent être perdues lors de la conversion d'octet [] en chaîne.

J'ai trouvé que cette méthode fonctionnait et elle semble être sécurisée. Avec ce code, une SAXParseException sera lancée à 100 000 extensions. Cette limite peut être réduite avec security manager ou en définissant la propriété system ou lors de l'exécution en utilisant-DentityExpansionLimit= / number /

InputStream textReader = new ByteArrayInputStream ( myByteArray);
SAXParserFactory parserFactory = SAXParserFactory.newInstance();
try {
        XMLReader reader = parserFactory.newSAXParser().getXMLReader();
        reader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        InputSource inputSource = new InputSource( textReader );
        reader.parse(inputSource);
}
 0
Author: SMC, 2014-01-09 14:44:54