Ergebnis 1 bis 7 von 7

Thema: Downloadlink führt zu Zugriff verweigert

  1. #1
    Contao-Nutzer
    Registriert seit
    18.02.2011.
    Beiträge
    74

    Standard Downloadlink führt zu Zugriff verweigert

    Hi,

    in der Detailansicht habe ich eingebaut PDF-Downloads.

    Nimmt man nun einen Link zu einem dieser PDF's und fügt ihn selbst in die AdressZeile ein (verschickt diesen z.B. via E-Mail) dann kommt beim einzelnen Aufruf immer "Zugriff verweigert" das ist in unserem Fall nicht gewollt. Geschweige denn, das Google dies natürlich auch als Fehler in der Console bemängelt.


    Kann man das abschalten? Ich habe dies m.E. schon mal irgendwo gelesen finde aber nichts mehr dazu.

    LG
    Geändert von Diakon (30.10.2017 um 14:57 Uhr)

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.726
    User beschenken
    Wunschliste

    Standard

    dann werden die Dateien wohl in einem geschützten Verzeichnis liegen oder die Rechte der Dateien sind falsch gesetzt - hat m.E. erstmal nix mit MM zu tun...

  3. #3
    Contao-Nutzer
    Registriert seit
    18.02.2011.
    Beiträge
    74

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    dann werden die Dateien wohl in einem geschützten Verzeichnis liegen oder die Rechte der Dateien sind falsch gesetzt - hat m.E. erstmal nix mit MM zu tun...
    Was meinst du damit im Detail?

    Hochgeladen wurden sie per FTP die Verzeichnisse haben keinen speziell Schutz und er Downloadlink geht von der Seite aus direkt ja auch.


    seitens Contao kommt aber bei Einzelaufruf des Downloadlinks eine 403 Meldung also muss die Rechte-Prüfung durch ein Modul in Contao durchgeführt werden.


    Damit hat der "fehler" oder dei "funktion" eigentlich nur was mit Contao -> MM zu tun?

    Vl. noch als info MM - Core ist 2.0.0-alpha15

    LG
    Geändert von Diakon (30.10.2017 um 16:47 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    18.02.2011.
    Beiträge
    74

    Standard

    Das Thema müsste um den filekey Parameter thematisieren?

    https://github.com/MetaModels/core/b...oolboxFile.php

    PHP-Code:
        protected function getDownloadLink($strFile)
        {
            if (!isset(
    $_SESSION['metaModels_downloads'][$strFile])) {
                
    $_SESSION['metaModels_downloads'][$strFile] = md5(uniqid());
            }
            return 
    UrlBuilder::fromUrl(Environment::get('request'))
                ->
    setQueryParameter('file'urlencode($strFile))
                ->
    setQueryParameter('fileKey'$_SESSION['metaModels_downloads'][$strFile])
                ->
    getUrl();
        } 

    Und dann:

    PHP-Code:
        private function checkDownloads()
        {
            
    // If images are to be shown, get out.
            
    if ($this->getShowImages()) {
                return;
            }
            if ((
    $file Input::get('file')) && ($key Input::get('fileKey'))) {
                
    // Check key and return 403 if mismatch.
                
    if (!(array_key_exists($file$_SESSION['metaModels_downloads'])
                    && 
    $_SESSION['metaModels_downloads'][$file] === $key)) {
                    
    $objHandler = new $GLOBALS['TL_PTY']['error_403']();
                    
    /** @var PageError403 $objHandler */
                    
    $objHandler->generate($file);
                }
                
    // Send the file to the browser if check succeeded.
                
    Controller::sendFileToBrowser($file);
            }
        } 

    >> // Check key and return 403 if mismatch. <<

    Das natürlich wenn nicht gewollt "Übel"... führt dazu das Google und Personen die keine aktive Session haben alle einen 403 bekommen.

    Ich weiß nur nicht ob ich das verschulde durch Konfiguration oder man das abstellen kann? Und ob ich überhaupt richtig liege mit meiner Vermutung
    Geändert von Diakon (30.10.2017 um 16:12 Uhr)

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.726
    User beschenken
    Wunschliste

    Standard

    musst Du über den "Download" gehen? warum die Dateien nicht "normal" verlinken?

    btw: What's your native language?

  6. #6
    Contao-Nutzer
    Registriert seit
    18.02.2011.
    Beiträge
    74

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    musst Du über den "Download" gehen? warum die Dateien nicht "normal" verlinken?

    btw: What's your native language?
    Ach im Moment noch sehr anglikanisiert aber kommt wieder.

    Was heißt "Musst du über Download" gehen? Ich kann doch bei einem Attribut "file" nur die Templates für file wählen und muss dort :

    "Link als Download oder Lightbox erstellen"

    wählen
    ..

    Einziger Workaround wäre dann selbst mittels RAW-Daten zu verlinken?


    btw: Wieso ist da dieser FileKey drinnen? Welchen Zweck erfüllt der? Das man in der Lightbox nur was ansehen kann, wenn man diese von der Seite initiiert?

  7. #7
    Contao-Nutzer
    Registriert seit
    18.02.2011.
    Beiträge
    74

    Standard

    Der "Fehler" ist im Template an dieser Stelle:


    PHP-Code:
        <?php if ($this->settings->get('file_showLink')): ?>
            <?php if ($this->settings->get('file_showImage')): ?>
                <a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $strTitle?>" href="<?php echo $arrFile['file']; ?>">
            <?php else: ?>
                <a title="<?php echo $strTitle?>" href="<?php echo $arrFile['url']; ?>">
            <?php endif; ?>
        <?php endif; ?>

    <a title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['url']; ?>">

    Der filekey Parameter in $arrFile['url'] soll wohl sicherstellen, das Lightbox-Elemente wohl nur geöffnet werden können, wenn man vorher auch auf der betreffenden Seite war.
    Das ist sicherlich auch im Falle einer Lightbox verständlich.

    Mindestens aber auch im Sinne eines Downloads hinderlich, da dann niemand den Download-Link nutzen kann ohne vorher auf der Detailseite gewesen zu sein.

    Das führt neben dem Weiterleiten des Links natürlich auch zu Problemen bei Google.

    Gefixt für mich habe ich das nun mit :


    <a title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['file']; ?>">

    m. E. wäre es sinnvoll dieses Sicherheitsfeature explizit zur Auswahl zu stellen oder aber die Download und Lightbox option zu trennen und je nachdem einen anderen Link zu erstellen.#


    Update

    Eigentlich scheint nur im Template url und file vertauscht oder? Das Lightbox Element muss url nutzen und der Download file dann passt es?

    PHP-Code:
        <?php if ($this->settings->get('file_showLink')): ?>
            <?php if ($this->settings->get('file_showImage')): ?>
                <a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $strTitle?>" href="<?php echo $arrFile['url']; ?>">
            <?php else: ?>
                <a title="<?php echo $strTitle?>" href="<?php echo $arrFile['file']; ?>">
            <?php endif; ?>
        <?php endif; ?>
    LG
    Geändert von Diakon (30.10.2017 um 16:49 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •