annette_hirz
New Creator

Wie kann die Benutzung von Deeplinks unterbunden werden?

Wir setzen FirstSpirit für unser Portal ein. Nun gibt es viele Benutzer, die sich Verlinkungen als Favoriten abspeichern. So kommt es dazu, dass sie diese Seiten aufrufen können, auch nachdem ihnen die Rechte entzogen worden sind.

Daher meine Frage: wie kann man es verhindern, dass Deeplinks benutzt werden?

Unser Ansatz wäre, die als Berkley Datenbank generierten ACLs mit beispielsweise PHP abzugreifen und zu prüfen, ob die Rechte für den Link vorhanden sind.

Gibt es dazu Erfahrungen? Gibt es dazu ein Best Practice?

0 Kudos
3 Replies
danielbaer
I'm new here

Du wirst nicht verhindern können, dass sich User Lesezeichen im Browser anlegen oder die URL merken und erneut eingeben. Deshalb sollte auf jeder Seite die Lese-Berechtigung überprüft werden.

Wir setzen in einem Projekt das Personalisierungsmodul ein, was die Vergabe von Rollen auf Struktur-Ebene ermöglicht. Im Ausgabekanal des Templates prüfen wir dann per JSP die Berechtigungen und unterbinden ggf. den Zugriff. Soweit ich weiß, funktioniert das Modul auch nur mit Java und nicht mit PHP.

$CMS_IF(!#global.node.meta("meta_permission", "inherit").getAllowedExplicit("").isEmpty || !#global.node.meta("meta_permission", "inherit").getForbiddenExplicit("").isEmpty)$

<%@ taglib uri="FIRSTpersonalisation" prefix="fsp" %>

<%@page trimDirectiveWhitespaces="true" %>

<%@page import="java.text.*,

               java.io.*,

  java.security.Principal,

  org.apache.catalina.realm.GenericPrincipal" %>

<%

  ServletContext context = pageContext.getServletContext();

  String webInfoPath = context.getRealPath(File.separator + "WEB-INF");

 

  request.setCharacterEncoding("UTF-8");

  response.setCharacterEncoding("UTF-8");

%>

<fsp:authorize force="true"/>

<%

if (request.getUserPrincipal() != null) {

  de.espirit.firstspirit.opt.personalisation.User user = (de.espirit.firstspirit.opt.personalisation.User) session.getAttribute("FIRSTpersonalisation.user");

       

        final Principal userPrincipal = request.getUserPrincipal();

        GenericPrincipal genericPrincipal = (GenericPrincipal) userPrincipal;

        final String[] roles = genericPrincipal.getRoles();

       

        for(String role : roles) {

        user.addGroup(role);

        }

        session.setAttribute("FIRSTpersonalisation.user", user);

        session.setAttribute("FIRSTpersonalisation.usergroups", user.getGroups());

}

%>

$CMS_END_IF$

0 Kudos
MichaelaReydt
Community Manager

Hallo Annette,

benötigst du noch weitere Hilfe oder konnte Daniels Antwort dir bereits weiterhelfen? In diesem Fall wäre es super, wenn du seine "richtige Antwort" entsprechend markierst.

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

wir werden die Links zu Dokumente auf eine Seite umleiten, in der geprüft wird, ob der Benutzer das passende Recht zur Datei hat.

Dazu müssen wir wie gehabt die Berkeley Datenbank auslesen. Wir suchen weiter, wie wir das bewerkstelligen könnten und damit würde ich sagen kann der Thread als unbeantwortet geschlossen oder ganz gelöscht werden - hatte eh keine große Hoffnung bezüglich des Themas. Smiley Happy

Grüße,

Annette

0 Kudos