Консультация № 168789
02.06.2009, 18:17
0.00 руб.
0 2 2
Здравствуйте.
Скажите пожалуйста у меня на страничке подключается файл main.js таким образом :

<script type="text/javascript" src="../For_js/main.js"></script>

Как можно сделать ,что бы запретить доступ к этому файлу если его хотят открыть таким образом http://namedomen/For_js/main.js ,
а по внутренней ссылке (как сейчас),что бы он подключался и все функции которые в нём работали.
Спасибо.

Обсуждение

Неизвестный
03.06.2009, 09:58
общий
это ответ
Здравствуйте, Dima1967.

Защитить скрипт не получится. Т.к. javascript выполняется на стороне клиента, т.е. в браузере пользователя, а это означает, что скрипт будет загружен пользователю на компьютер для его последующей интерпретации. Если скрипт загружен, то получить к нему доступ можно простым сохранением страницы и просмотром сохранёных файлов, среди которых и будет искомый скрипт. Можно попытаться запретить доступ к файлу через htaccess, но боюсь в этом случае и конструкция вида ../For_js/main.js работать тоже не будет.
Неизвестный
03.06.2009, 13:46
общий
это ответ
Здравствуйте, Dima1967.
Давайте попробуем поразмышлять. Скрипт подключается в теге <SCRIPT src="../For_js/main.js"> и просматривается по ссылке http://namedomen/For_js/main.js. Если мы закроем доступ к файлу - изменим права доступа таким образом, что прочесть его будет нельзя, то мы не сможем его прочитать ни по ссылке, ни в SCRIPT. Если мы воспользуемся файлом .htaccess и "замаскируем" путь к файлу, то если он читается одним способом, он также просто прочитается и другим способом.

Чтобы решить проблему, надо ответить себе на вопрос: различает ли сервер, как обращается клиент к его содержимому? То есть, иными словами, есть ли для файла разница, как его читают - с помощью тега SCRIPT или напрямую? Ответ тут один: файлу абсолютно все равно, каким образом его читают. В данном случае сервер определяет HTTP_USER_AGENT одинаково - это будет браузер пользователя. И в том, и в другом случае. А следовательно, если работает один способ, то работает и второй. Не работает один способ - не работает и другой.

Сделать то, о чем Вы спрашиваете, можно было бы, если бы существовали какие-то "признаки", по которым сервер понимал, что файл, хранящийся на нем, читают именно так, а не иначе. А для него, как назло, что так, что этак - один черт, как говорится...
Можно создать упакованную версию файла - читать человеку ее будет труднее, но при желании и ее можно распаковать. Эта защита годится только от чайников, от профессионала же она не спасет. Загляните в GOOGLE, там много ссылок на такие приложения. Эффективность их сильно различается - одни приложения просто вырезают переносы строк и лепят все в одну строку. Другие приложения заменяют все строковые константы на метки(каждой метке соответствует только одно слово), а в конце создают некий словарь из этих констант. В первом случае справиться с нечитабельностью кода можно просто - файл обрабатывается PHP-скриптом, вставляющим перенос строки после каждой точки с запятой. Во втором случае уже будет немножко потруднее, но это задача тоже для PHP-программиста. Если человек не знает языка, умеющего работать с файлами, то он может сделать это и вручную(хотя я ему в этом случае не завидую - если файл большой, то это ж с ума сойти можно!).

Короче, единственный нормальный совет, который Вам можно дать в данном случае - относитесь к этому проще
С уважением, Товарищ Бородин
5
Форма ответа