Как заблокировать прямой доступ к моим файлам JavaScript?

Я использую Minify для минимизации и кэширования всех моих запросов на скрипт. Я хочу, чтобы мои пользователи имели доступ к мини-версиям файлов JavaScript.

Minify лежит на www.example.com/min а мои скрипты находятся по адресу www.example.com/scripts . Как заблокировать прямой доступ к doc_root/scripts где лежат мои незавершенные файлы JavaScript. Я бы предпочел не выносить их из корня документа, но это вариант.

Обратите внимание, что я использую Zend Framework, поэтому фактический корень моего приложения переносится на www.example.com/public . Файл htaccess обрабатывает переписывание.

Не можете ли вы просто использовать файл .htaccess внутри doc_root/scripts чтобы предотвратить весь доступ через Интернет к файлам .js через HTTP?

Это не остановит минимизацию, поскольку это обеспечивает косвенный доступ.

Итак, в doc_root/scripts/.htaccess что-то вроде строк

 <Files ~ "\.js$"> order allow,deny deny from all </Files> 

Обратите внимание, что в этом случае имеет место файл .htaccess .

Вы фактически не можете блокировать код, обращенный к конечным пользователям. Даже если вы служили ему с PHP или другим серверным языком и блокировали прямые запросы, конечно, все же можно читать его напрямую с помощью ряда инструментов.

Вы должны с этим помнить и помнить о комментариях javascript, бизнес-знаниях и т. Д.

ОБНОВИТЬ:

Однако, если вы говорите о коде, который никогда не должен быть доступен конечному пользователю, вы могли бы, как вы упомянули, переместить его из корня сервера или заблокировать файлы в своем каталоге (или в целом каталог). Это легко с .htaccess от Apache.

 order deny, allow deny from all 

Вы также можете перенаправить исходные файлы в мини-версии с помощью mod_rewrite в ваш файл .htaccess.

 RewriteEngine On RewriteRule /scripts/(.*)$ /min/$1 [L,NC] 

Зависит от используемого сервера. Предполагая, что это Apache, вы можете добавить это в свой файл .htaccess:

 <Directory ~ "\scripts"> Order allow,deny Deny from all </Directory> 

Или что-то в этом роде..

Единственный способ проверить рефери, и не все его отправляют, или отправляют реальный. Другими словами, вы не можете блокировать прямой доступ к тем, кто действительно хочет чего-то. Невозможно определить с точностью 100%, если запрос является прямым или выполняется с помощью запроса типа <script src=....> .

Для того, чтобы ваш Javascript фактически запускал браузер пользователя, он должен быть в состоянии прочитать его в конечном счете. Таким образом, нет никакого реального способа «заблокировать» доступ к вашей папке сценариев (ну, если быть точным, вы можете, но это сломает ваш сайт, так как браузер не будет видеть файлы для их запуска).

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

Еще одна вещь, которую я видел, – это создать «пустую» страницу js.html и вставить все свои javascript в теги скриптов на странице (встроенной, а не внешней), а с его главной страницы сделать ann ajax-запрос js.html и вставьте его в нижней части страницы. вид раунда вокруг, но пользователь не увидит js при просмотре источника, если не использует инструменты для разработки, такие как firebug.

Обратите внимание, что последний параметр также может вызвать некоторую задержку в зависимости от количества загружаемого кода. но здесь ключ не блокирует доступ к вашим скриптам, а просто затрудняет их получение / чтение / копирование.

Изменить: oops, misread также. Я думаю, что лучшим решением в этом случае было бы пойти с файлом htaccess в вашей папке с сценариями, запрещающей весь доступ