Блокировать прямой доступ к js, css-файлу, но разрешить доступ из index.html?

Это мой каталог выглядит так:

Содержимое в index.html:

<html> <body> <script src="data.js" /> </body> </html> 

Моя проблема:

  • Я не хочу, чтобы пользователь видел мои data.js по прямой ссылке, например, www.sample.com/data.js

  • Но data.js прежнему разрешает доступ из index.html

Я пробовал в .htaccess вроде:

 deny from all 

или

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] RewriteRule \.(gif|jpg|css|js|png)$ - [F] 

Но он всегда блокирует доступ к index.html тоже.

Благодарю.

Мои советы легко обойти , но без осторожности мы можем оказаться в ловушке.

Только живой просмотр страницы

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

 <div id="RemoveMe0"> <script type="text/javascript"> //This code it is hidden to live view. var my_var = 5 + 5; $('#RemoveMe0').remove(); //or document.getElementById("RemoveMe0").innerHTML = ""; </script> </div> 

Для включения javascript:

 <div id="RemoveMe1"> <script type="text/javascript" src="Javascript/MyJS.js"></script> <script> //Your include it is hidden to live view. $('#RemoveMe1').remove(); </script> </div> 

Только прямой просмотр

Поместите свои файлы в HTML-файл (myfile.js в myfile.html), как это при прямом просмотре, вы можете выполнить функцию javascript.

 function Hello() { alert("Hello"); } Hello(); //<script>document.body.innerHTML = "";</script> 

Или если вы не хотите переименовывать свой файл, вы можете использовать файл .htaccess для изменения заголовка файла.

 AddType text/html .js 

Или уменьшите / проанализируйте свой JS

Вы можете использовать такой инструмент:

  • minize your js : этот инструмент использует функцию eval и пытается усложнить ваш скрипт.
  • Javascript Obfuscator : Упрощает код для новичков, его легко обойти.
  • Компилятор Google Closure JS : оптимизация, сжатие и минимизация кода. Это естественный инструмент для производственной среды .
  • Javascript для Asm.js

Я не хочу, чтобы пользователь просматривал или загружал мои данные.js по прямой ссылке, например: http://www.sample.com/data.js

Невозможно.

JS будет отображаться на стороне клиента, т. Е. Он будет загружен в кеш, независимо от того, что вы делаете для его защиты.

Попробуйте выполнить поиск, прежде чем задавать вопросы. Есть много результатов поиска для этой темы.

Некоторые ссылки:

1. Как предотвратить прямой доступ к файлам CSS и JS

2 .. http://www.codeproject.com/Questions/287331/Prevent-user-from-viewing-CSS-or-Javascript-of-any

,
,
,
и более …


У всех есть общий ответ, который заключается в следующем: вы не можете скрывать / блокировать файлы CSS или JS от доступа посетителей. Иными словами, «НЕВОЗМОЖНО»,