![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
AzuManga |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 12.5.2005 Репутация: нет Всего: нет |
Здравствуйте, форумчане!
Наверняка кто-то из вас уже решал подобную задачу. Есть страница, которая генерируется PHP и содержит JS с AJAX-запросом к некоему PHP-скрипту на сервере. Можно ли как-нибудь запретить вызов этого некоего скрипта с других сайтов? То есть, чтобы никто не смог дергать с других хостов этот некий скрипт, получать его результаты работы. Или ввести какой-нибудь шифр, который предотвращал бы вызов скрипта с других хостов... Спасибо! Это сообщение отредактировал(а) AzuManga - 11.12.2007, 18:41 --------------------
Точка с запятой; |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
самое простое?
формировать запрос с get параметром сформированному по известному только этому скрипту закону а у скрипта проверка на правильность этого запроса |
|||
|
||||
AzuManga |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 12.5.2005 Репутация: нет Всего: нет |
bars80080, спасибо за быстрый ответ, но я не очень понимаю, что мешает другим людям скачать себе JS с AJAX-запросом, залить к себе на сервак и использовать?
--------------------
Точка с запятой; |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Нет, разумеется, нельзя.
И при чем здесь вызов с сайтов? К твоей странице обращается браузер. Запретить вызов из браузера можно или только всем, или никому. Нужно хорошо понимать основы функционирования веб-сайтов, чтобы такие фантазии в голову не приходили |
|||
|
||||
AzuManga |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 12.5.2005 Репутация: нет Всего: нет |
Мне пока сдается, что обфускатор JS-кода и небольшое кодирование выдачи запроса могут помочь...
--------------------
Точка с запятой; |
|||
|
||||
euginewm |
|
|||
![]() Drupal Development Профиль Группа: Участник Сообщений: 28 Регистрация: 25.9.2006 Где: Zaporozhye Репутация: нет Всего: нет |
А что мешает обрабатывать AJAX-запрос на вашем "серваке"? Я бы его проверял в первую очередь, при поучении |
|||
|
||||
FCCStepan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 31.10.2007 Репутация: нет Всего: нет |
в массиве $_SERVER была переменная которая отвечала за адрес, с которого вызывается текущий скрипт. это не 100% защита но уже что то.
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
генерируем страницу уже с переменной, что они тогда сольют? морально устаревшую переменную? |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
Нереализуемо. Можно безконечно придумывать все более и более бредовые идеи, но все равно, все что "знает" JS модуль, может узнать пользователь и не какие "тайные" шифры не помогут...
Единственно более верное решение, это проверять url, как защита от совсем ламеров, нежелающих учиться, а способных только копи-пастить код и делиться с которыми действительно жалко. Если человек действительно знает PHP и JS, тогда проблем у него не возникнет "обойти" систему, но лично мне не жалко для таких людей своих работ. Кстати, в дополнение к фильтру по url, можно еще копирайты в комментах кинуть т.к. врядли кто их будет убирать. Получиться, что еще и проPRесь ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Мне кажется, что после последнего сообщения топикстартера обсуждать стало нечего.
Только мусор будет. Все-таки, понятия браузер, хост, запрос основательно перемешались в головах у большинства советчиков. В отличие от них, автор явно понял, что стопроцентной защиты быть не может, и решил сделать простенькую, от совсем ламеров. Я согласен, что это вполне адекватное решение. Те же, кто продолжуют обсуждать принципиальную возможность такой защиты, просто не представляют себе схему взаимодействия браузера с сервером. bars80080, попробуй распиши на бумаге последовательность запросов. Станет понятнее. Вообще, если понимать, что AJAX запрос ничем не отличается от обычного (кроме того, что скрыт от наивного юзера), то большинство вопросов снимется. Другое дело, что понять это, как выясняется, многим проблематично. BuShaRt, ещё HTTP надо знать, да. причем JS, как раз - не обязательно. Только в случае с шифрованием вывода. Это сообщение отредактировал(а) Feldmarschall - 12.12.2007, 10:39 |
|||
|
||||
bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
это ко мне? совершенно не согласен, что мешает нам при формировании ссылки в js приписать ей в конце значение типа ?secret=kodirivannjatarabarshchina путём
где $perem - переменная формируемая исключительно на сервера и постоянно изменяется, скажем она будет актуальна только в течение одной минуты, а потом устаревает, в этом случае злодею придётся постоянно заходить на ваш сайт за этой переменной я не говорю, что данный способ оптимальный, но он возможен и на самом деле прост |
||||
|
|||||
AzuManga |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 168 Регистрация: 12.5.2005 Репутация: нет Всего: нет |
bars80080, гениально!! Большое спасибо и +1 ))
Апдейт: Хотя, может быть такая ситуация, что юзер зашел на сайт в 10:59:50, а нажал на кнопку в 11:00:30. Надо подумать, что будет в таком случае 8) Это сообщение отредактировал(а) AzuManga - 12.12.2007, 13:36 --------------------
Точка с запятой; |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Чтобы предотвратить дальнейшие споры.
Слово "нереализуемо" относилось к первоначальному вопросу, а не к предложенному способу защиты. |
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
это как раз находится в пределах одной минуты ![]() можно увеличить и до часа я лично применяю нечто подобное в другом случае (не с js): авторизация в админской части пользователь авторизуется и пропускается в систему, при этом на него в БД записывается характеристика с указанием ip, даты, код какой-то (уже не помню), и его id, а поверху в сессии идёт только id. при заходе на любую страницу происходит проверка на все эти переменные, причём у клиента нет ничего, кроме id, но через час запись будет уничтожена и ему придётся заново авторизоваться, то бишь выкинет из админки ну а вообще методы шифрования должен разрабатывать только один человек, имхо что знают двое, знают все |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
Генерь хеш имени скрипта, который обращается к другому, и передавай его. Если то => всё ок, если нет => выдавай ересь.
Помогает. Ересь выдавай затем, чтобы люди ломали голову, почему у них не работает как надо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |