


Questions d'entretien sur les nouvelles Java 2020 - Java Web (2)
1. Si le client désactive les cookies, la session peut-elle toujours être utilisée ?
Cookie et Session sont généralement considérés comme deux choses indépendantes. Session utilise une solution qui maintient l'état côté serveur, tandis que Cookie utilise une solution qui maintient l'état côté client. Mais pourquoi ne puis-je pas accéder à la session si je désactive les cookies ? Étant donné que la session utilise l'ID de session pour déterminer la session du serveur correspondant à la conversation en cours et que l'ID de session est transmis via Cookie, la désactivation de Cookie équivaut à perdre l'ID de session et vous n'obtiendrez pas la session.
Supposons que l'utilisateur utilise Session lorsque les cookies sont désactivés. Il existe plusieurs façons d'y parvenir :
Définissez "session.use_trans_sid = 1 dans le php.ini. configuration file ", ou activez l'option "--enable-trans-sid" lors de la compilation pour permettre à PHP de transmettre automatiquement l'ID de session entre les pages.
Transmettez manuellement la valeur via l'URL et transmettez l'ID de session via le formulaire masqué.
Enregistrez l'ID de session dans un fichier, une base de données, etc., et appelez-le manuellement pendant le processus inter-pages.
2. Quelle est la différence entre le ressort mvc et les jambes de force ?
1. Différences dans les mécanismes d'interception
Struts2 est une interception au niveau de la classe. Chaque requête créera une action Lors de l'intégration avec Spring, la portée d'injection ActionBean de Struts2 est en mode prototype. . prototype, puis injectez les données de la requête dans la propriété via setter et getter. Dans Struts2, une action correspond à un contexte de requête et de réponse. Lors de la réception de paramètres, elle peut être reçue via des attributs. Cela montre que les paramètres d'attribut sont partagés par plusieurs méthodes. Une méthode d'Action dans Struts2 peut correspondre à une URL, mais ses attributs de classe sont partagés par toutes les méthodes. Cela signifie qu'il est impossible d'utiliser des annotations ou d'autres méthodes pour identifier sa méthode, et qu'elle ne peut être conçue que comme plusieurs instances.
SpringMVC est une interception au niveau de la méthode. Une méthode correspond à un contexte de requête, la méthode est donc fondamentalement indépendante et a un accès exclusif aux données de requête et de réponse. Chaque méthode correspond à une URL à la fois. Le paramètre passé est directement injecté dans la méthode, ce qui est unique à la méthode. Les résultats du traitement sont renvoyés au framework via ModeMap. Lors de l'intégration de Spring, le Controller Bean de SpringMVC est par défaut en mode Singleton, donc par défaut, un seul contrôleur sera créé pour toutes les requêtes. Il ne devrait y avoir aucune propriété partagée, il est donc thread-safe. Si vous souhaitez modifier la portée par défaut, vous devez le faire. ajoutez la modification de l'annotation @Scope.
Struts2 possède son propre mécanisme d'interception. SpringMVC utilise une méthode Aop indépendante, ce qui fait que la quantité de fichiers de configuration de Struts2 est plus grande que celle de SpringMVC.
(Tutoriels associés recommandés : programme d'entrée Java )
2. Différences dans les frameworks sous-jacents
Struts2 est implémenté à l'aide de Filter (StrutsPrepareAndExecuteFilter), SpringMVC ( DispatcherServlet ) est implémenté à l'aide de Servlet. Le filtre est initialisé après le démarrage du conteneur ; il plante après l'arrêt du service, plus tard que le Servlet. Le servlet est initialisé lors de son appel, avant l'appel de Filter, et est détruit après l'arrêt du service.
3. Performances
Struts2 est une interception au niveau de la classe. Chaque requête correspond à une nouvelle action de l'instance, qui doit charger toutes les injections de valeurs d'attribut. SpringMVC n'implémente aucune configuration. est basé sur la méthode d'interception qui consiste à charger un bean en mode singleton pour l'injection. Par conséquent, l’efficacité et les performances du développement SpringMVC sont supérieures à celles de Struts2.
4. Configuration
spring MVC et Spring sont transparents. La gestion et la sécurité de ce projet sont également supérieures à celles de Struts2.
3. Comment éviter l'injection SQL ?
PreparedStatement (méthode simple et efficace)
Utiliser des expressions régulières pour filtrer les paramètres entrants
-
Filtrage de chaînes
Appelez cette fonction dans JSP pour vérifier si elle contient des caractères illégaux
Code de jugement de page JSP
4. Qu'est-ce qu'une attaque XSS et comment l'éviter ?
L'attaque XSS est également appelée CSS, le nom complet est Cross Site Script (attaque de script intersite). Le principe est que l'attaquant entre du code HTML malveillant dans un site Web présentant des vulnérabilités XSS. Lorsque l'utilisateur navigue sur le site Web, ce code HTML sera automatiquement exécuté pour atteindre l'objectif de l'attaque.
Les attaques XSS sont similaires aux attaques par injection SQL. Dans les attaques par injection SQL, les instructions SQL sont utilisées comme entrée utilisateur pour interroger/modifier/supprimer des données. Dans les attaques XSS, des scripts malveillants sont insérés pour cibler le contrôle du navigateur. obtenir des informations sur l'utilisateur. XSS est une vulnérabilité courante dans les programmes Web. XSS est une méthode d'attaque passive utilisée côté client.
L'idée générale de la prévention XSS est la suivante : filtrer l'entrée (et les paramètres d'URL) et encoder la sortie.
(Tutoriel vidéo recommandé : Tutoriel vidéo Java)
5. Qu'est-ce qu'une attaque CSRF et comment l'éviter ?
CSRF (Cross-site request falsification) est également appelé attaque en un clic ou session riding. Le nom chinois complet est cross-site request falsification. De manière générale, un attaquant falsifie une requête provenant du navigateur de l'utilisateur et l'envoie à un site Web que l'utilisateur s'est authentifié pour visiter, de sorte que le site Web cible reçoit et pense à tort qu'il s'agit de l'opération réelle de l'utilisateur et exécute la commande. Couramment utilisé pour voler des comptes, transférer de l'argent, envoyer de faux messages, etc. L'attaquant exploite la vulnérabilité de vérification des demandes du site Web pour mettre en œuvre une telle attaque. Le site Web peut confirmer que la demande provient du navigateur de l'utilisateur, mais ne peut pas vérifier si la demande provient de la véritable intention de l'utilisateur.
Comment éviter :
1. Vérifiez le champ HTTP Referer
Le champ Referer dans l'en-tête HTTP enregistre l'adresse source de la requête HTTP. Dans des circonstances normales, la demande d'accès à une page à sécurité restreinte provient du même site Web, et si un pirate informatique souhaite y mettre en œuvre une attaque CSRF, il ne peut généralement construire la demande que sur son propre site Web. Par conséquent, les attaques CSRF peuvent être défendues en vérifiant la valeur Referer.
2. Utilisez le code de vérification
Ajoutez le code de vérification aux pages d'opération clés Après avoir reçu la demande, l'arrière-plan peut juger le code de vérification pour empêcher CSRF. Mais cette méthode n’est pas très conviviale.
3. Ajoutez un jeton à l'adresse de la demande et vérifiez
La raison pour laquelle l'attaque CSRF réussit est que les pirates peuvent complètement falsifier la demande de l'utilisateur et que toutes les informations de vérification de l'utilisateur contenues dans la demande existent dans cookies, afin que les pirates puissent utiliser directement les propres cookies de l'utilisateur pour passer la vérification de sécurité sans connaître les informations de vérification.
Pour résister au CSRF, la clé est de mettre dans la requête des informations que les pirates ne peuvent pas falsifier, et ces informations n'existent pas dans le cookie. Vous pouvez ajouter un jeton généré aléatoirement en tant que paramètre à la requête HTTP et créer un intercepteur côté serveur pour vérifier le jeton. S'il n'y a pas de jeton dans la requête ou si le contenu du jeton est incorrect, on considère qu'il peut l'être. une attaque CSRF et la demande sera rejetée.
Cette méthode est plus sûre que la vérification du référent. Le jeton peut être généré une fois que l'utilisateur s'est connecté et placé dans la session. Ensuite, le jeton peut être retiré de la session à chaque demande et mis en correspondance avec le jeton présent. la requête. Comparez, mais la difficulté de cette méthode est de savoir comment ajouter le jeton à la requête sous forme de paramètres.
Pour les requêtes GET, le jeton sera ajouté à l'adresse de la requête, de sorte que l'URL devienne
http://url?csrftoken=tokenvalue
Pour les requêtes POST, ajoutez
<input type="hidden" name="csrftoken" value="tokenvalue"/>
questions d'entretien Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
