Скрыть URL-адреса в файле HTML / JavaScript - PullRequest
0 голосов
/ 22 марта 2011

Я использую ajax на своем веб-сайте и для того, чтобы использовать ajax, я должен написать имя файла, например:

id = "123";
$.getJSON(jquerygetevent.php?id=" + id, function(json)
{
    //do something
});

как я могу защитить URL?Я не хочу, чтобы люди видели это и использовали это ...

Ответы [ 6 ]

5 голосов
/ 22 марта 2011

, что является ограничением использования скриптов на стороне клиента.
Нет реального способа скрыть его от пользователя.
Есть много способов сделать его менее читабельным (минимизировать и т. д.), но в конце концов конечный пользователь все равно может просмотреть код

2 голосов
/ 22 марта 2011

Привет Рон и добро пожаловать в интернет. Интернет был (процитировать Википедия по теме)

Истоки Интернета восходят к исследованиям 1960-х годов, проведенным по заказу правительства Соединенных Штатов в сотрудничестве с частными коммерческими организациями для создания надежных, отказоустойчивых и распределенных компьютерных сетей. Финансирование новой магистрали США Национальным научным фондом в 1980-х годах, а также частное финансирование других коммерческих магистралей привело к всемирному участию в разработке новых сетевых технологий и слиянию многих сетей. Коммерциализация международной сети 1990-х годов привела к ее популяризации и включению практически во все аспекты современной человеческой жизни.

Из-за этих источников и из-за того, что протоколы, окружающие идентификацию ресурсов HTTP (например, для URL ), на самом деле не имеют никакого способа предотвратить это. Если бы Интернет был изначально разработан как коммерческое предприятие (подумайте AOL), тогда они могли бы избежать запрета браузером показывать новый URL-адрес пользователю.

Пока люди могут «просматривать исходный код», они могут видеть URL-адреса на странице, которую вы предлагаете им посетить. Лучшее, что вы можете сделать - это запутать ссылки, используя javascript, но в лучшем случае это просто раздражение. То, что может быть декодировано для пользователя, может быть декодировано для бота.

Добро пожаловать в интернет, пусть ваше пребывание будет долгим!

0 голосов
/ 24 марта 2011

вы можете защитить (спрятать) все что угодно на клиенте, просто зашифровав / зашифровав его в сложный формат для реального человека

0 голосов
/ 22 марта 2011

Я думаю, что основная проблема заключается в том, почему вы хотите скрыть URL. Как все отметили, нет никакого способа решить фактически разрешенный URL. После запуска FireBug дает вам все, что вам нужно знать.

Однако, является ли целью помешать пользователю повторно использовать URL? Возможно, вы можете сгенерировать одноразовые, относящиеся к сеансу URL-адреса, которые могут использоваться только в данном сеансе HTTP. Если вы вырезаете / вставляете этот URL кому-то еще, они не смогут его использовать. Вы также можете установить его срок действия, если они пытаются обновить. Это делается постоянно.

Является ли целью помешать пользователю взломать ваш URL, указав другой параметр запроса? Ну, вы все равно должны обрабатывать это на стороне сервера, проверяя, авторизован ли пользователь. Еще до активации ссылки пользователь может использовать такой инструмент, как FireBug, чтобы редактировать код на стороне клиента столько, сколько он хочет. Я делал это несколько раз для живых сайтов, когда они не работают так, как я хочу:)

ОБНОВЛЕНИЕ: УЖАСНЫМ взломом будет удаление невидимого Java-апплета на странице. Они также могут инициировать запросы и взаимодействовать с Javascript. Любая логика может быть включена в код апплета, который будет невидим для пользователя. Это, однако, создает дополнительные проблемы совместимости браузера и т. Д., Но может быть сделано. Я не уверен, появится ли это в Firebug. Пользователь все еще может отслеживать исходящий трафик, но это может быть менее очевидно. Было бы лучше сделать вашу серверную часть более надежной.

0 голосов
/ 22 марта 2011

Почему бы вместо этого не поставить какую-то форму безопасности на ваш php-скрипт, проверить переменную сеанса или что-то в этом роде?

РЕДАКТИРОВАТЬ - ответ на комментарий:

Я думаю, что вы, возможно, получилитележка перед лошадью как-то.URL по своей природе являются публичными адресами для ресурсов.Если ресурс не должен быть общедоступным, за исключением определенных случаев (т. Е. На вашей странице), тогда это вопрос определения и реализации безопасности для ресурса.В вашем случае, если вы хотите, чтобы ресурс вызывался только один раз, то почему бы не разместить одноразовый ключ доступа на странице вызова?Тогда ресурс будет доставлен только при обновлении страницы.Хотя я не уверен, почему вы хотите это сделать, предоставляет ли ресурс конфиденциальную информацию?Возможно, на сервере слишком тяжело запускать скрипт?И если ресурс следует использовать только для визуализации страницы один раз, а не для обновления ее после ее рендеринга, возможно, было бы лучше реализовать ее на стороне сервера?

0 голосов
/ 22 марта 2011

-edit- неправильно понятый вопрос, этот код НЕ предоставляет то, что вы просили. Извините!

Используйте что-то вроде:

$.post("jquerygetevent.php",    {'id': id},function(sScript) {
    try {
        eval(sScript);  
    } catch(error) {
        alert(error.message+"\n"+sScript);
    }
        return false;
});
...