2012-04-07 2 views
2

Wenn ein Benutzer einige Aktivitäten in der Anwendung hatte, gibt es eine Möglichkeit, herauszufinden, dass eine Anfrage vom selben PC kam, wenn der Benutzer das nächste Mal zur Anwendung zurückkehrt?
Eine andere Seite der Frage ist, die Anwendung vor Bots zu schützen.Gibt es eine Möglichkeit zu erkennen, dass Anfragen an eine Webanwendung, die mit Java erstellt wurde, vom selben Client kommen?

Nur für den Fall, dass die Lösung von AS abhängt, bin ich speziell für die Webanwendung auf Glassfish v3.x. Meine Anwendung wurde mit JSF2 erstellt, aber ich denke nicht, dass es wichtig ist.

+0

Kekse? Sie sind maschinenspezifisch. – DOK

+0

@ Jmort253, danke für den Tipp. Ich frage mich, ob es mir hilft, Anfragen von einem Bot zu erkennen? – jjd

+0

Tut mir leid, @DOK, ich habe mich nicht an die Benutzeroberfläche gewöhnt und schaue mir den falschen Ort an. Der vorherige Kommentar wurde an Sie gerichtet. – jjd

Antwort

2

Sie könnten ein Cookie in den Browser schreiben, der ein eindeutiges Token enthält, und es im Benutzerprofil in der Datenbank speichern. Wenn sich der Benutzer erneut anmeldet, übergeben Sie das eindeutige Token an den Server und vergleichen Sie es mit dem Token, das im Benutzerprofil in der Datenbank gespeichert ist.

Ich habe gerade etwas zu lesen und es die MAC-Adresse erscheint immer ist die Frage aus: how to get a client's MAC address from HttpServlet?

+0

, studierte ich das auch und kam zu dem gleichen Schluss. Könnten Sie mir bitte sagen, ob es für Bots funktioniert? Was ist, wenn Cookies auf Kundenseite verboten sind? – jjd

1

HINWEIS: Der einzige Weg ist, über die Authentifizierung eine Rückkehr Benutzer zuverlässig zu identifizieren. Bei der Verwendung von Cookies suchen Sie wirklich nach wiederkehrenden Verbindungen im selben Browser.

Wenn der Benutzer Cookies löscht, den Browser neu installiert, einen anderen Browser verwendet oder einen anderen Computer verwendet, wird sich Ihre Webanwendung höchstwahrscheinlich nicht an sie erinnern. Mit diesem gesagt, ist hier eine Möglichkeit, wiederkehrende Benutzer ohne Authentifizierung zu identifizieren:

Die HttpSession ist eine Möglichkeit, einen zurückkehrenden Benutzer zu erkennen. Wenn ein Benutzer Aktivitäten in Ihrer Webanwendung ausführt, können Sie einen Schlüssel speichern, der diesen Benutzer eindeutig identifiziert. Dadurch wird ein Cookie in ihrem Browser abgelegt, sodass Ihre Webanwendung diese Daten bei der Rückkehr aus der Sitzung abrufen kann.

Aus dem Http javadocs:

Bietet eine Möglichkeit, einen Benutzer über mehr als eine Seite Anfrage oder besuchen Sie auf eine Website zu identifizieren und über diese Benutzerinformationen zu speichern.

Nehmen Sie die Benutzeraktivität:

ArrayList activity = new ArrayList<String>(); 

activity = (ArrayList<String>) request.getSession().getAttribute("activity"); 

if(activity == null) 
    activity = new ArrayList<String(); 

activity.add("Searched for parts for Ford Thunderbird"); 
request.getSession().setAttribute("activity", activity); 

Anzeige Benutzeraktivität:

ArrayList activity = new ArrayList<String>(); 
activity = (ArrayList<String>) request.getSession().getAttribute("activity"); 

if(activity == null) { 
    log.info("No activity to display. New user"); 

} else { 
    for(String a : activity) { 
     log.info(a); 
    } 
} 

das Timeout in web.xml Rahmen:

<!-- Define the default session timeout for your application, 
    in minutes. From a servlet or JSP page, you can modify 
    the timeout for a particular session dynamically by using 
    HttpSession.getMaxInactiveInterval(). --> 

<session-config> 
    <session-timeout>30</session-timeout> <!-- 30 minutes --> 
</session-config> 
+0

sind keine temporären Session-Cookies? Wenn dies der Fall ist, würde ein Problem auftreten, wenn die Verwendung in einer anderen Browsersitzung oder einer Woche später zurückkehrt. Ich denke, dass sie versuchen, den Benutzer eine anständige Menge an Zeit später zu entdecken. Ich schlug einen dauerhaften Cookie vor, aber es könnte immer noch eine große Anzahl von Umständen geben, die beide Methoden verhindern würden. –

+0

Das Sitzungszeitlimit kann in Ihrer Datei web.xml gesteuert werden. Sie können dies auch dynamisch für das HttpSession-Objekt festlegen. Siehe die Javadocs für Details. Ich habe auch meine Antwort mit dem ersten Satz aus den javadocs auf HttpSession aktualisiert: "Bietet eine Möglichkeit, einen Benutzer über mehr als eine Seite Anfrage oder Besuch auf einer Website zu identifizieren und Informationen über diesen Benutzer zu speichern.". Ich denke, Sie haben Recht, dass in den meisten Fällen Sitzungen für authentifizierte Benutzer verwendet werden. Dies ist keine Regel, nur eine allgemeine Beobachtung. Ich denke nicht, dass Sie eine Sitzung falsch machen würden. – jmort253

+0

@ kmb385 - Sie haben auch recht, dass dies keinen Benutzer erkennt, wenn Cookies gelöscht werden, ein anderer Browser verwendet wird, ein anderer Computer verwendet wird usw. Die einzige Möglichkeit, einen zurückkehrenden Benutzer zuverlässig zu identifizieren, ist durch einen Registrierungsprozess beim Benutzer authentifiziert mit einem Benutzernamen/Passwort, OAuth, Openid, etc. – jmort253

Verwandte Themen