Автор Тема: Забраняване на кеша в браузъра, no-cache meta tag  (Прочетена 1295 пъти)

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Стана ми интересно доколко бих могъл да защитя някоя картинка от сваляне през браузъра, та мъдренето ми засега стигна до следния PHP код:

Файл image.php
Код
GeSHi (PHP):
  1. <?php
  2.  
  3. if ($_GET['check'] == md5(date('U').'parola')) {
  4.  
  5. header("Expires: Mon, 26 Jul 2012 05:00:00 GMT");
  6. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  7. header("Cache-Control: no-store, no-cache, must-revalidate");
  8. header("Cache-Control: post-check=0, pre-check=0", false);
  9. header("Pragma: no-cache");
  10. header('Content-Type: image/jpeg');
  11.  
  12. $img = imagecreatefromjpeg('http://път.до.jpg.картинка');
  13.  
  14. imagejpeg($img);
  15. imagedestroy($img);
  16. }
  17.  
  18. ?>

Файл page.php
Код
GeSHi (PHP):
  1. <?php
  2.  
  3. echo '<img src="image.php?check='.md5(date('U').'parola').'">';
  4.  
  5. ?>

Казано без код, страницата page.php не извиква директно картинката, а извиква PHP файла image.php, който има грижата да изобрази картинката, с което се скрива реалния път до картинката, прави се проверка валидността на хеширан стринг, валиден 1 секунда, с което се предотвратява самостоятелно извикване на image.php с картинката след тази секунда, и се добавят хедъри за забрана на кеша в браузъра, за да не може при цъкване с десен бутон върху картинката и опит за запазване, картинката да се запази от кеша, вместо да се мине през image.php, когато проверката с хеша няма да мине. По принцип, ако човек прави подобни опити за защити, няма да е зле да сложи и някой и друг JavaScript по въпроса, така че още в началото да откаже поне незапознатите.
С това "защитата" не е завършена, не съм забравил нито за screenshot-ите, нито за това, че на скрипт с wget или curl ще му е достатъчна тази 1 секунда валидност на стринга за проверка, за да свали картинката чрез наличния в page.php хеш... Но не пълната защита е поводът да пусна тази тема.

Поводът е, че с горните 3 защити в PHP кода (индиректното извикване на картинката, проверката със стринга и забраната на кеша) общо взето се получи добра забрана за сваляне на картинката в Google Chrome, при което в първия момент реших, че това ще е достатъчно откъм действията в браузъра. Ама ядец!
Оказа се, че Google Chrome е единственият браузър, който се съобразява с meta tag-овете за забрана на кеша. Не че съм пробвал всички браузъри и всичките им версии на света, но пробвах с Firefox 22, Opera 12 и IE 8, и никой от тях не се съобрази със забраната на кеша - във всички тях си цъкаш десен бутон върху картинката, запазване на картинката и си изтегляш картинката като пич. Вярно, не с оригиналното ѝ име, но това няма никакво значение - картинката се изтегля и се изтегля от кеша.

Та това ми е питанката. Пропускам ли нещо в начина, по който се опитвам да забраня кеша (за сефте го правя, но ровенията ми из Мрежата ме доведоха до тази сборка), или Google Chrome е единственият браузър, който се съобразява с HTML спецификацията по въпроса? Ако не пропускам нищо, това всеобщ бъг в браузърите ли ще е или някакъв бойкот на въпросния meta tag?

П.П.: Темата по принцип е за функционалността на забраната на кеша, но ако на някой много му се пишат хрумвания по въпроса със защитите от изтегляне на картинки през браузъра, нека се чувства свободен да пише :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
DNS cache въпрос
Настройка на програми
Soulstealer 9 3595 Последна публикация Dec 22, 2004, 12:54
от Bogo
Fc-cache не намира конфигурационния си файл
Настройка на програми
dilyan_rusev 0 1728 Последна публикация Mar 28, 2007, 15:33
от dilyan_rusev
/var/cache/yum/ - изтрита по невнимание
Настройка на програми
toti84 7 3143 Последна публикация Jan 21, 2011, 18:40
от shoshon
Производителност на PHP с и без opcode cache
Web development
zeridon 10 3771 Последна публикация Feb 15, 2011, 11:55
от morbid_viper
Web cache
Общ форум
runtime 5 2293 Последна публикация Mar 20, 2012, 12:55
от laskov