Существует какая-то манера защищать файл разряда с защищенной страницы?

Я помещаю анализ в мой вопрос, мы представляем, что у нас есть один login где пользователь инициализирует сеанс, и переслан в страницу, защищенную посредством сеанса. Защищенная страница могла бы оставаться немного как:

if (isset($_SESSION['usuario'])) {  
    if (!filter_var($_SESSION['usuario'] ?: '', FILTER_VALIDATE_INT) === false) {
          $id_usuario = $_SESSION['usuario'] ?: '';
    } else {        
          //Destruimos sesion.
         session_destroy();
         //Redirigimos a login.
         header('location: tulogin.php');
         exit();
    }   
} else { //Caso Falso, Redirigimos a login.
    header('location: tulogin.php');
    exit();
}

Сейчас приходит мой вопрос, существует какая-то манера мочь защищать файлы разрядов на странице, защищенной пользователями, которые не инициализировали сеанс, или они не зарегистрированы.

<a href="http://descargar.php/archivo_winrar.rar">Descargar</a>

Так как, если один получает адрес нашей URL он мог бы загружать вышеупомянутый контент, не имея доступа. Был бы интересным практический пример с объяснением, спасибо antemano.

4
задан 21.11.2016, 18:51
3 ответа

Сохраняй файл с подходящими разрешениями для того, чтобы никто не смог соглашаться прямо.

Однажды подтвержденный, что пользователь был осмотрен, смоги загружать файл.

<?php
session_start();

if (isset($_SESSION['usuario'])) {

    $file = '/directorio/archivo_winrar.rar';

    header('Content-type: application/x-rar-compressed');
    header('Content-length: ' . filesize($file));
    readfile($file);

} else {

    echo 'No tienes permiso para la descarga';
}

Шрифт: Allow logged in user to Довнлоад Филе

1
ответ дан 24.11.2019, 12:29
  • 1
    Немного как это habí в leí do @aldanux с funció n header (), añ adiendo Ваши разрешения, я подтвердил пример и функционируй правильно. –  D.Bulten 21.11.2016, 18:36

Ты мог бы решать это, если бы вместо того, чтобы соединять прямо файл, ты соединил в страницу разряда, который брал бы как параметр идентификатора файла.

На этой странице разряда ты мог бы продолжать такой алгоритм как этот:

  1. Подтверди, что идентификатор файла действительный (p.e. в базе данных)
    1. Если он это не, покажи сообщение ошибки и закончись
  2. Подтверди, что пользователь осмотрен
    1. Если он это не, redirecciona в login
  3. Наладь стоимость header в те типа файла, чтобы возвращать
  4. Прочитай файл
  5. Возврати файл

У пользователя будет печать, из которой файл загружается, но если он будет иметь ссылку с каким-то пользователем, который не осмотрен, и logueado оно он не будет функционировать.

1
ответ дан 24.11.2019, 12:29

Я то, что harГ - в serГ, - чтобы помещать файл в папку с "кодифицированным именем" и это менять каждый раз, когда делается разряд, сохранять это "кодифицированное имя" в моей таблице и я заношу в список.

Например. Я помещаю файл в папку имени "a574930fg09" и сохраняю это имя в таблице. Когда уполномоченный пользователь хочет загрузить это, он соглашается на соединение "/a574930fg09/superarchivo.png".

Это соединение может меняться или все их dГ-схвати или каждые 10 минут..., или когда ты будешь хотеть! и только система знает соединение. Если кто-то хочет иметь это одинокое соединение, он будет служить из-за "время обновления" что обычно не является очень полезным.

0
ответ дан 24.11.2019, 12:29
  • 1
    Но не está защищенный в 100 %, так как он зависит от actualizació n, хотя его будет 5 min или 10 min, serí в достаточный, чтобы загружать файл .rar –  D.Bulten 21.11.2016, 18:02
  • 2
    просвет, но я понимаю, что идея состоит в том, чтобы избегать того, чтобы кто-то переслал соединение в сайт и это оставил там, чтобы это иметь со всеми... не podrí чтобы происходить! И самое большее, ты можешь помещать 30 секунд (то, что медлит с тем, чтобы инициализировать разряд) –  Ari Waisberg 23.11.2016, 14:03