За последние 24 часа нас посетил 17401 программист и 1600 роботов. Сейчас ищут 942 программиста ...

Ограничение доступа снаружи, без потери доступа изнутри

Тема в разделе "Вопросы от блондинок", создана пользователем igpl, 22 авг 2008.

  1. igpl

    igpl Активный пользователь

    С нами с:
    7 фев 2008
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Латвия, Даугавпилс
    Здравствуйте!

    На сайте внутри каталога htdocs расположен каталог uploads/docs/ с permission 777,
    чтобы через админку можно было загружать файлы JPG и PDF.
    Зарегестрированные пользователи могут просматривать JPG
    PHP:
    1. <?php
    2. ...
    3. $path= "uploads/docs/";     //INSIDE
    4. //$path= "../uploads/docs/"; //OUTSIDE
    5. $fext= "jpg";
    6. $fnam= "shema";
    7. $src = $path. $fnam. ".". $fext;
    8. $otvet .= "<a href='index.php?page=doc'>".$text['back']."</h3></a><br>";
    9. $otvet .= "<img src='".$src."' alt='doc' align='middle' border='1'><br><br><br>";
    10. ...
    или скачивать PDF

    PHP:
    1.  
    2. <?php
    3. ...
    4. //$path= "uploads/docs/";       // INSIDE
    5. $path= "../uploads/docs/";  //OUTSIDE
    6. $fext= "pdf";
    7. $fnam= "shema1";
    8. $file_name = $path. $fnam. ".". $fext; 
    9. $file_size = filesize($file_name);
    10. $file_alias = "document.pdf";
    11. header('Content-type: application/pdf');
    12. header("Content-Transfer-Encoding: binary");
    13. header("Content-Length: ".$file_size."");
    14. header('Content-Disposition: attachment; filename=\"'.basename($file_alias).'"');
    15. header("Expires: 0");
    16. header("Cache-Control: no-cache, must-revalidate");
    17. header("Pragma: no-cache");
    18. readfile($file_name);
    19. # PDF open/save
    20.  
    Но и при наборе: адрес сайта/uploads/docs/имя файла, происходит его скачивание.
    Как защититься?

    Переношу каталог uploads/docs/ с permission 777 за пределы htdocs.
    Теперь напрямую не скачать. Что и надо.
    Но и зарегестрированным пользователям тоже облом на JPG.
    PDF-ки скачиваются, а JPG почему-то теперь недоступны.

    Как сделать по уму?

    Спасибо.
     
  2. JustUserR

    JustUserR Активный пользователь

    С нами с:
    23 авг 2008
    Сообщения:
    8
    Симпатии:
    0
    Может лучше использовать .HTaccess ?
    Например, можно проверять реферер, и если видно что пользователь был зарегистрирован, то давать ему доступ, иначе обламывать ;-)
    Поддлать реферер ниего не стоит, но большноство пользователей (Непрограммистов) о нем и не знает
    SetEnvIfNoCase Referer "^http://Ваш_сайт/login.php?OK" local_ref=1
    <FilesMatch ".jpg">
    Order Allow,Deny
    Allow from env=local_ref
    </FilesMatch>