Aujourd'hui, nous parlerons des liens anti-vol Java. Il est inutile d'en parler davantage, et nous utiliserons directement les cas de candidature.
L'outil utilisé ici est le logiciel de rapports Finereport, qui est équipé d'un système de prise de décision (un système d'affichage frontal Web, principalement utilisé pour le contrôle de l'autorisation), et peut utiliser le lien Java Antift pour obtenir des autorisations de page.
Lors de la saisie directe de l'URL du rapport dans le navigateur, son fichier d'en-tête est vide. Par conséquent, vous pouvez porter deux jugements lors de l'accès: si le fichier d'en-tête est vide et quelle page à sauter, et si elle ne correspond pas, sautez simplement sur la page d'erreur.
Qu'est-ce qu'un référent?
Le référence fait ici référence à un champ de l'en-tête HTTP, également connu sous le nom d'adresse source HTTP (référence HTTP), qui est utilisé pour indiquer où se lier vers la page Web actuelle, et le format est URL. En d'autres termes, la page Web de l'en-tête du référence HTTP peut vérifier d'où proviennent les visiteurs, qui est souvent utilisé pour traiter les fausses demandes de site croisé.
Qu'est-ce qu'un référent vide et quand un référence vide apparaîtra-t-il?
Tout d'abord, nous définissons le référence vide car le contenu de l'en-tête du référence est vide, ou une demande HTTP ne contient pas du tout l'en-tête du référence.
Alors, quand les demandes de HTTP n'incluront-elles pas le champ référent? Selon la définition de référente, sa fonction est d'indiquer où une demande est liée. Lorsqu'une demande n'est pas générée par un contact de lien, il n'est naturellement pas nécessaire de spécifier la source de liaison de la demande.
Par exemple, si vous entrez directement l'adresse URL d'une ressource dans la barre d'adresse du navigateur, cette demande n'inclura pas le champ référente, car il s'agit d'une demande HTTP "générée à partir de l'air mince" et n'est pas liée à partir d'un seul endroit.
Dans le cadre de la chaîne anti-vol, quelle est la différence entre permettre un référence vide et ne pas permettre un référence vide?
Dans la chaîne anti-vol, si un référent vide est autorisé, il est possible d'accéder directement à l'URL de ressource via la barre d'adresse du navigateur;
Cependant, si le référence vide n'est pas autorisé, l'accès direct via le navigateur est également interdit.
Étapes de fonctionnement
1. Ajouter un fichier de classe
Écrivez un fichier de classe pour déterminer si le fichier d'en-tête est vide, le code est le suivant:
package com.fr.test; import java.io.ioException; import java.io.printwriter; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletException; import javax.servlet.sservletRerest; javax.servlet.servletResponse; import javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpSession; public class dodo implement {public void détruire () {/ / to-gener} implements filit DOFILTER (ServLetRequest Request, ServletResponse Response, FilterChain Chain) lève IOException, servlexception {httpservletRequest req = (httpservletRequest); HttpServletResponse resp = (httpservletResponse) Réponse; String référer = req.GetHeader ("référer"); // L'adresse IP ci-dessous est une demande de page normale if (null! = Référente && (référer.trim (). StartSwith ("http: // localhost: 8033") || référer.trim (). StartWith ("http://www.finereporthelp.com/test/hello.html")))) {système demande "+ référente); chaîne.Dofilter (req, resp); // Ce qui suit consiste à sauter lorsqu'une demande de page n'est pas normale} else {System.out.println ("Chain Steal" + référente); req.getRequestDispatcher ("/ ldaplogin.jsp"). Forward (req, resp); }} public void init (filterconfig arg0) lève servletException {// Todo Méthode générée automatiquement Stub}}Compilez dodo.java dans le fichier de classe et placez-le dans le répertoire% tomcat_home% / webreport / web-inf / classes / com / fr / test.
2. Modifier le fichier web.xml
Ouvrez le fichier web.xml sous% tomcat_home% / webapps / webreport / web-inf, configurez un filtre de filtre et exécutez le filtrage lorsque RAPPORTSERVER apparaît. Le code est le suivant:
<filter> <filter-name> AuthFilter </ Filter-Name> <Lilter-Class> com.fr.test.dodo </filter-Class> </ Filter> <Filter-Mapping> <Filter-Name> AuthFilter </ Filter-Name> <Url-Pattern> / RAPPORTSERVER </URL-Pattern> </filter-mapping>
Cela peut être fait en deux étapes. S'il s'agit d'un lien volé, il passera à la page d'erreur LDAPLogin susmentionnée. Il n'y a pas de page LDAPLOIGN ici, donc elle passera directement à 404. Si vous souhaitez implémenter les autorisations de données, vous pouvez utiliser une seule connexion ou une injection de session.
Test d'efficacité
Préparez deux fichiers HTML
Supposons que Hello.html est l'URL correcte
<html> <body> <p> test </p> <a href = "http: // localhost: 8033 / webreport / reportServer? Reportlet = Demo% 2fnewchart% 2fothers% 2flogarithmic_axis.cpt & op = write"> anti-theft chain test </a> </ody> <html>
Supposons que Steel.html est l'URL pour voler des liens
<html> <body> <p> Test, mauvaise adresse de liaison </p> <a href = "http: // localhost: 8033 / webreport / reposerver? reportlet = Demo% 2fnewchart% 2fothers% 2flogarithmic_axis.cpt & op = write"> Test de la chaîne anti-theft </a> </body> </html>
Situation 1
Sauter dans hello.html, le lien de saut est correct, c'est-à-dire que le référence n'est pas vide et correct
Situation 2
Sauter dans l'acier.html, le lien de saut est faux, c'est-à-dire que le référence n'est pas vide et l'erreur
Situation trois
Accès direct à l'adresse URL, c'est-à-dire que le référence est vide
L'exemple ci-dessus de l'application de la chaîne anti-vol Java dans le rapport (recommandé) est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.