Заборона на JavaScript-хотлинкинг з допомогою .htaccess

299

Від автора: майже десять (!) років тому я написав статтю про заборону хотлінкінга зображень. Всі ми маємо право захищати зображення, розміщені на нашому сайті, так як це може сильно його уповільнити. Мені подобається ця стаття, там показано, як запитану зображення можна замінити на будь-яке інше.

Наприклад, я можу замінити будь-вхідний запит зображення своїм логотипом:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://davidwalsh.name/.*$ [NC]
RewriteRule .*.(png|gif|.jpe?g)$ [F,NC]

Але що робити, коли за хотлинку намагаються отримати JS-файли? За ці роки я написав безліч статей по JS, часто з демо сторінками. Я думаю, ви здогадуєтеся, що я зберігаю багато JS-файлів, включаючи всі файли мого плагіна MooTools. Я вибрав дещо жорсткий підхід для заборони хотлінкінга JS-файлів:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://davidwalsh.name/.*$ [NC]
RewriteRule \.(js)$ http://davidwalsh.name/hotlink.js [R,L]

Код вище копіюється в мій файл .htaccess і говорить серверу, що той повинен ігнорувати запити JS-файлів з чужих доменів і замінювати всі JS-файли на hotlink.js. У цьому файлику лежить хитра посилання:

window.location = ‘https://davidwalsh.name/’;

Жорстко? Можливо, але вони навантажують мій сервер. Люди не повинні робити хотлинки на ці файли, і редирект на мій сайт прямо говорить їм, де потрібно шукати рішення проблеми. Я міг би вчинити ще жорсткіше, наприклад, підкласти файл evil.js або зробити редирект на сайт для дорослих, але волів не заходити так далеко.

Захищайте свій сервер від хотлінкінга. У вас є повне право на це, в кінці кінців, ви, швидше за все, зробите людям ласку.