Как запретить прямой доступ к XML-файлу на сервере - PullRequest
4 голосов
/ 10 сентября 2010

У меня есть HTML-файл index.html (на моем сервере, скажем, abc.com), который обращается к xyz.js как

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

Файл javascriptв свою очередь обращается к файлу data.xml .Файлы index.html, xyz.js и data.xml находятся в одной папке.

Как отказать в прямом доступе к xyz.js и data.xml , если пользователь вводит abc.com / xyz.js и abc.com / data.xml в браузере.Само собой разумеется, index.html должен иметь доступ к этим файлам.

Как я могу это сделать (желательно с .htaccess )

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Я предполагаю, что вы имеете в виду, что index.html ссылается на файл .js через тег script, а затем js читает в xml с помощью XMLHttpRequest или чего-то подобного то есть: js и xml оба должны быть доступны для чтения браузером, но вы хотите ограничить это только «одобренным» способом.

Если это правильно, то вы не можете. Вы можете попробовать посмотреть на Реферера, но это ненадежно и легко подделывается. Даже без подмены, многие браузеры имеют инструменты отладки, которые позволяют легко увидеть результат каждого выполненного GET.

Лучше просто привыкнуть к тому факту, что все, что вы отправляете в браузер, потенциально может быть просмотрено пользователем, если он будет над этим работать достаточно.

Полагаю, для JavaScript вы могли бы использовать инструмент обфускатора, если вы чувствуете себя таким склонным. Для XML мало что можно сделать. Я полагаю, вы могли бы зашифровать его, но это было бы легко взломать, поскольку ваш js-код обязательно будет содержать процедуру дешифрования и ключ.

0 голосов
/ 10 сентября 2010

Если вам действительно необходимо защитить данные, вам нужно внедрить чувствительную часть вашей программы для работы на сервере, а не на клиенте. Тогда вы сможете полностью сохранить свой источник данных в общедоступном веб-пространстве. Если клиент (браузер) может получить доступ к необработанным данным, то и пользователь (даже если вы заставите их пройти через несколько шагов, чтобы получить к нему доступ).

Чтобы достичь цели, вам нужно разделить архитектуру программы на две части:

  • не чувствительные части запускаются, в JavaScript, в браузере
  • чувствительные части запускаются в .net / java / php / ruby ​​/ python и т. Д. И т. Д. На сервере
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...