IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

La sérialisation en Java, une « horrible erreur » ? Oracle prévoit de la supprimer


Sujet :

Java

  1. #21
    Membre extrêmement actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 104
    Points : 2 574
    Points
    2 574
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Mais je comprend bien que si les performances ne sont pas un problème, ou si on est pas maitre de l'interface et que de l'autre coté du tuyau il y a des changements fréquents non documentés, un format autoporteur est nécessaire. Je pense juste que c'est crado ^^
    Oui mais voilà, la vraie vie c'est souvent crado et on a pas toujours la totale maitrise de toutes les couches du SI. Et plus on creuse le merdier, plus on se rend compte à quel point c'est sale. Mais ça fonctionne (la plupart du temps). ^^

    Merci pour tes précisions techniques en tout cas. Tel que tu le décris, Protocol Buffers n'a pas l'air plus lourd à déployer que du SOAP.
    "If the revolution ain't gon' be televised
    Then fuck, I'll probably miss it" - Aesop Rock

  2. #22
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    Citation Envoyé par Grogro Voir le message
    Oui mais voilà, la vraie vie c'est souvent crado et on a pas toujours la totale maitrise de toutes les couches du SI. Et plus on creuse le merdier, plus on se rend compte à quel point c'est sale. Mais ça fonctionne (la plupart du temps). ^^
    C'est peut être l'avantage de taffer dans le militaire

    Merci pour tes précisions techniques en tout cas. Tel que tu le décris, Protocol Buffers n'a pas l'air plus lourd à déployer que du SOAP.
    De rien :-)
    Les seules conditions dans lesquelles j'ai utilisé du SOAP et du REST était pour des web services sous JBOSS (j'ai l'impression que c'était il y a une éternité). Effectivement, Eclipse bien configuré (ce qui n'était pas donné non plus), facilitait pas mal le boulot. Avec protobuf, le seul truc "fastidieux", c'est le méga switch case à l'entrée et a la sortie du tuyaux... rien d'insurmontable non plus.

  3. #23
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    je suis assez surpris:
    1) ah bon il y a des applications qui font de la Serialization sur du réseau non-local/privé?
    2) quand bien même, si on a peur d'intrusions, qu'est ce qui empêche d'authentifier des MarshalledObjects (ou de passer par un canal authentifié)?
    En partant à la retraite j'ai quitté un projet java (gros matériel scientifique) qui doit être opérationnel en 2020 sur une durée de 20 ans .(avec une multitude d'ordis qui s'échangent en local, et à toute vitesse, des tonnes d'objets).. tout à coup j'ai des sueurs froides ....
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  4. #24
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    1) ah bon il y a des applications qui font de la Serialization sur du réseau non-local/privé?
    Ben oui... Pour une appli web, supposons que tu aies besoin de conserver une donnée avec une certaine permanence côté client. Ben tu la sérialises dans un cookie, problème réglé. Qu'est-ce qui pousserait à penser à faire autrement ?

    Citation Envoyé par professeur shadoko Voir le message
    2) quand bien même, si on a peur d'intrusions, qu'est ce qui empêche d'authentifier des MarshalledObjects (ou de passer par un canal authentifié)?
    Ben rien ne t'empêche de le faire, d'ailleurs je dirais que c'est indispensable si tu décides d'avoir un mécanisme de ce genre (je vois pas, par contre, ce que ça peut changer si c'est un canal authentifié. Tu penses qu'un pirate ne songeras pas à prendre un compte client chez toi pour te pirater ?)

    Le problème c'est que les objets marshallés, c'est pas toi qui t'en occupes, c'est les bibliothèques dont tu te sers. Et elles étaient à des kilomètres de s'imaginer qu'on pourrait s'en servir dans un contexte où il faudrait vérifier qui demander à désérialiser quoi. Du coup, ben, elles ne le font pas.

    Les failles de ce genre que l'on connaît, ont bien entendu été corrigées dans des versions plus récentes maintenant que rétrospectivement ça a l'air évident pour tout le monde une fois qu'on le sait. Mais, quid de ceux qui ne mettent pas à jour, et surtout, ça montre que les failles de ce genre peuvent arriver comme un rien. Il y a aussi toutes celles qu'on ne connaît pas.

    Citation Envoyé par professeur shadoko Voir le message
    En partant à la retraite j'ai quitté un projet java (gros matériel scientifique) qui doit être opérationnel en 2020 sur une durée de 20 ans .(avec une multitude d'ordis qui s'échangent en local, et à toute vitesse, des tonnes d'objets).. tout à coup j'ai des sueurs froides ....
    Sans maintenance, en Java ou ailleurs, ce genre de choses n'existent plus... Pour les applications non connectées, on avait pas à s'inquiéter de faille de sécurité, et le matériel très robuste et durable faisait qu'on n'était pas tenu de mettre régulièrement à jour. C'est fini tout ça. À la rigueur, la partie durable peut toujours se réinventer... Mais l'aspect faille de sécurité potentielle, non. Pas à un époque où on sait trouver des failles comme Spectre ou Meltdown.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #25
    Membre habitué Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Bonjour tout le monde,
    J'ai lu tous vos différents posts avec beaucoup d’intérêt.
    Tout d'abord, je suis novice dans le domaine de la sérialisation. Je travaille actuellement sur un projet en swing et nous sérialisions au début les objets via JAXB pour les avoir en XML. Le problème était que certains utilisateurs s’amusaient à changer les données stockées en XML car totalement lisibles via un logiciel tel que notepad++. Puis ils nous appelaient pour se plaindre que le fichier n'était plus accepté par l'application (rien d’anormal surtout s'ils suppriment une partie d'une balise...). Nous avons réfléchi à plusieurs solutions et au lieu de chiffrer les objets sérialisés en XML, nous avons choisi de les sérialiser en octet.
    Sachant que pour désérialiser les objets nous avons besoin de la classe de celui-ci, je ne vois pas comment il pourrait y avoir un danger ?
    Après mon cas est différent mon projet n'est pas ouvert à internet donc les risques de piratage sont plus que minimes.
    Je ne vois pas en quoi cette pratique est néfaste surtout que niveau lourdeur du code il n'y a pas photo ça reste extrêmement simple par rapport à l'XML ou JSON ou autres (à mon avis). À part pour le débogage, je ne vois pas vraiment de côté négatif (dans mon cas en tout cas).
    Après je n'ai pas le recul de la plupart d'entre vous. Je suis donc preneur de tout conseil ou remarque^^....

  6. #26
    Expert confirmé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 413
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 413
    Points : 4 734
    Points
    4 734
    Par défaut
    Bonjour Badshade23,

    Si ta sérialisation n'est utilise que pour la persistance, le XML était effectivement une solution viable, son seul problème étant que ce n'est pas idiot-proof
    Tu peux bricoler ton fichier pour limiter la part d'idiot, le nommer *.data par exemple, ou *.<nom de ton logiciel>, tu auras déjà 80% des idiots qui, s'il ne suffit pas de double cliquer, n'y toucheront plus. Peut-être également le rendre fichier caché.

    Tu peux sinon effectivement sérialiser en binaire. Avec google protocol buffer, au lieux d'envoyer les octets dans une socket, tu le fait dans un fichier et le tour est joué.

    Tu peux aussi te renseigner sur sqlite. C'est une base de donnée relationnelle sous forme de fichier (donc contenu binaire) et qui avec les outils adapté est "débogable". Le commun des mortel ne pouvant pas y toucher. C'est utilisé par exemple par firefox pour enregistrer préférences et personnalisations.

    Par contre, en fonction de ton architecture actuelle, ça demandera sans doute plus d'effort que la sérialisation binaire.

  7. #27
    Membre habitué Avatar de Badshade23
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2014
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2014
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    C'est sur pour "l'idiot-proof" .
    J'ai déjà changé l'extension mais bon ça ne change malheureusement rien .
    Je connaissais pas google protocol buffer j'ai vu qu'il était mentionné dans les commentaires précédents.
    Quant à SqlLite j'en ai déjà entendu parler mais plus pour Android.
    Mais sa ne change pas le fait que je ne comprends pas où serait la faille de sécurité sachant que pour désérialiser les objets nous avons besoin de la classe de celui-ci?

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/07/2013, 07h21
  2. Récupérer le code d'une erreur Oracle
    Par etoileDesNeiges dans le forum SQL
    Réponses: 6
    Dernier message: 04/10/2007, 10h22
  3. Signification d'une erreur Oracle
    Par L_latifa dans le forum Oracle
    Réponses: 6
    Dernier message: 05/04/2006, 13h18
  4. Activer une servlet Java à partir d'outils Oracle
    Par valauga dans le forum Oracle
    Réponses: 1
    Dernier message: 09/03/2006, 16h32
  5. [C#] Erreur Oracle avec une requete paramétrée
    Par gael.mases dans le forum C#
    Réponses: 1
    Dernier message: 02/12/2005, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo