2017-10-15 9 views
0

J'utilise javamail pour lire le fichier et enregistrer la pièce jointe dans un répertoire local. J'ai envoyé un fichier protégé par un mot de passe & un fichier corrompu au mail & mon code n'a pas jeté d'exception, est-ce prévu?Can inputtream peut-il lire les octets d'un fichier protégé par mot de passe/corrompu?

Multipart multipart = (Multipart) message.getContent(); 
MimeBodyPart part = (MimeBodyPart) multipart.getBodyPart(1); 
byte[] dataInBytes = IOUtils.toByteArray(part.getInputStream()); 
String base64Data = Base64.encodeBase64String(dataInBytes)) 
+2

Un fichier est juste une séquence d'octets. Même s'il contient des données chiffrées ou corrompues, il ne reste rien de plus qu'une séquence d'octets. Un flux d'entrée ne différencie ou ne discrimine en aucune façon. Les octets sont des octets. – SpiderPig

Répondre

0

Est-ce prévu?

Oui c'est prévu. Ce ne devrait pas être une préoccupation .

Les octets sont simplement des octets. Java et les API Javamail ne font aucune distinction en fonction de la façon dont elles ont été créées.

Le chiffrement de fichier empêchera (devrait!) À quelqu'un de lire le non chiffré octets ... à moins qu'il ne connaisse le mot de passe. Cependant, rien n'empêche une personne ayant un accès légitime ou clandestin à l'e-mail, au repos ou en transit, de lire les octets cryptés. Et les API Javamail n'essaient pas de faire cela non plus .


1 - ... à moins que le cryptage ou le mot de passe sont faibles . Mais alors vous êtes probablement déjà vissé ... parce que quelqu'un aurait pu intercepter l'email en transit. Indépendamment de ce que fait Javamail.

2 - Si vous y pensez, cela impliquerait que l'API Javamail devrait être impliquée dans le processus de déchiffrement. Et vous auriez besoin de pour fournir votre mot de passe ou des clés de décryptage à Javamail pour obtenir votre fichier à partir de la pièce jointe. Ce serait un réel problème de sécurité!