web-dev-qa-db-fra.com

Pourquoi Java est-il qualifié de langage "sécurisé"?

J'imagine que c'est une question générale, mais je suis en train de suivre des cours d'initiation à Java (SE/ME) et le matériel d'étude affirme que Java est souvent utilisé à des "fins de sécurité". Cela n'explique cependant pas ce qu'ils veulent dire en affirmant que Java intègre une bonne sécurité.

Est-ce la preuve d'un pirate informatique? Produit-il un logiciel hautement stable? Quoi?

La sécurité de mon point de vue (pour le moment) est-ce que c'est entre les mains du développeur qui écrit le code, pas le langage lui-même?

17
Marcus

IMHO, c'est une déclaration très trompeuse. En Java, vous ne pouvez pas accéder à des tableaux hors limites, et vous n'avez pas de pointeurs. Par conséquent, plusieurs failles de sécurité, telles que la corruption de pile ou le débordement de mémoire tampon, sont impossibles à exploiter en Java. Mais Java n’est pas intrinsèquement plus sûr que n’importe quel autre langage; c'est simplement qu'il y a moins de chance de faire des erreurs qui peuvent causer des failles de sécurité. En réalité, cela réduit les failles de sécurité, mais il est totalement trompeur de dire que Java est sécurisé.

28
Lie Ryan

Il y a deux choses qui rendent Java "plus sécurisé" que d'autres langages à certains égards:

  • La vérification automatique des limites de la matrice et l’absence de gestion manuelle de la mémoire rendent certaines classes d’erreurs de programmation souvent source de graves failles de sécurité (telles que les dépassements de mémoire tampon). La plupart des autres langages modernes partagent cette fonctionnalité, mais pas C et C++, qui étaient des langages de développement d'applications dominants (et toujours majeurs) au moment de l'apparition de Java.
  • Le concept Security Manager facilite l’exécution des applications Java dans un "bac à sable", ce qui les empêche de nuire au système sur lequel elles sont exécutées. Cela a joué un rôle important dans la promotion de Java à ses débuts, car Applets était considéré comme un moyen omniprésent et sûr d’avoir des applications Web côté client.
12

Java fournit des garanties et des outils de sécurité, tels que:

  • Aucun exploit de dépassement de tampon
  • Vérification des octets
  • Autorisations de sécurité pour différentes bases de code
  • API liées à la sécurité

Pour plus de détails, voir "Java Security Overview" .

5
Andy Thomas

Comme Java se compile en tant que bytecode qui s'exécute ensuite à l'intérieur d'une machine virtuelle , il ne peut pas accéder à l'ordinateur sur lequel il s'exécute comme un programme compilé en mode natif.

3
thomaspaulb

La raison générale pour laquelle Java est considéré comme plus sécurisé que, par exemple, C, est parce qu’elle gère la gestion de la mémoire pour vous. Dans d'autres langages, les programmeurs allouent leur propre mémoire et ne le font souvent pas correctement, ce qui provoque des débordements de mémoire tampon, etc. Bien entendu, Java VM peut toujours contenir les mêmes types de bogues, mais il est testé avec le temps , contrairement à tous les programmes écrits par les utilisateurs.

Donc, à cet égard, il est plus sécurisé. Mais vous pouvez toujours écrire du code non sécurisé, car aucune langue ne pourrait jamais vous protéger d'écrire simplement du code erronément.

3
Matthew

Plusieurs langages, notamment C et C++, ont une classe de bogues qui peuvent permettre l'exécution de code arbitraire lorsqu'ils sont exploités. Ces bogues sont assez courants et faciles à créer. Ces bogues sont souvent une forme de buffer overflow .

Java et de nombreux autres langages/plates-formes éliminent cette classe de bogues (à l'exception de nombreux bogues exploitables dans la VM elle-même), ce que beaucoup prétendent être plus sûrs.

3
nos

Le compilateur Java convertit le code Java en code octet (fichier .class), qui est ensuite exécuté par la machine virtuelle Java (JVM). JVM est un interpréteur installé sur chaque ordinateur client et mis à jour avec les dernières mises à jour de sécurité par Internet. Lorsque ces codes d’octet sont exécutés, la machine virtuelle Java peut s’occuper de la sécurité. On dit donc que Java est plus sécurisé que les autres langages de programmation.

2
user2287187
  1. C’est une question fondamentale posée dans certaines interviews, pourquoi Java est sécurisée, car elle est sécurisée parce qu’à l’intérieur de jvm se trouve un logiciel dont le nom est security manager, qui est responsable de tout, si quelque chose ne se passe pas bien. empêcher un système

  2. Une autre chose est que cela crée une interface entre le code source et le système (os), sans aucune permission de l'utilisateur pour faire quelque chose de mal.

2
atul

C'est du marketing)

2
Stan Kurilin

De plus, les types génériques (ou génériques) présentent une ressemblance superficielle avec les modèles en C++, à la fois dans leur syntaxe et dans leurs cas d'utilisation prévus (tels que les classes de conteneur). Mais la similitude n’est que superficielle: les génériques du langage Java sont presque entièrement implémentés dans le compilateur, qui effectue une vérification et une inférence de type, puis génère des codes octets non génériques. Cette technique de mise en oeuvre, appelée effacement (où le compilateur utilise les informations de type génériques pour assurer la sécurité des types, puis les efface avant de générer le code intermédiaire), a des conséquences surprenantes et parfois déroutantes. Bien que les génériques constituent un grand pas en avant pour la sécurité des types dans les classes Java, apprendre à les utiliser fournira presque certainement une occasion de se gratter la tête (et parfois de se maudire) en cours de route.

1
Rajesh

**

> Pourquoi Java est sécurisé Lanquage

**

Raison: 1. Le programme Java s'exécutant dans son propre sandbox de machine virtuelle 2. Le masquage des données en Java (OOP) en fait un des langages sécurisés. Peut-être que certains points sont également là mais ne peuvent pas le rappeler pour le moment.

3.Aucune utilisation de pointeurs empêchant l'accès non autorisé au bloc de mémoire.

4. Pas d'accès à la gestion de la mémoire

  1. Fonctionnalité de contrôle d'accès
  2. Gestion des exceptions
  3. Utilisation du mot clé final
  4. Le package Java.security fournit les classes et les interfaces pour la structure de sécurité.

La sécurité Java est activée à chaque étape: mot clé final sécurisé classe chargement jit security manager vérification de code par octet gestion automatique de la mémoire jsse extension cryptographique signature numérique jaas jaas: service d’authentification et d’autorisation Java

Si vous avez appris cette chose s'il vous plaît comme ça

0
Keshav Gera