![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
jone31 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 29.11.2008 Репутация: нет Всего: нет |
есть Iframe приложение для соц сети вконтакте, подскажите как можно отсеить прямые запросы к странице приложения, и разрешить доступ только из vk iframe ?
некоторые умники все же заходят просто посмотрев какую страницу ВК загружает в iframe и открывают её... сейчас работает на JS проверка, но её обходят наверно просто тупо удалив эту проверку... может кто нибудь знает, как можно таких юзеров отсеить используя что то на стороне сервера? ибо js не эффективно... Добавлено через 7 минут и 15 секунд есть вариант по HTTP_REFERER, но ведь у юзеров может быть отключена передача реферера или это касается только ссылок? |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
С помощью PHP невозможно наверняка узнать, находится ли страница во фрейме.
Можно схитрить через JavaScripts. Если window.self === window.top, то это значит, что страница не во фрейме. Хотя надежнее будет проверить top.location.href, который, по идее, содержит то, что у пользователя в адресной строке написано. Если этот адрес правильный (то есть это фрейм на странице вконтакте), то тогда загружать страницу с помощью AJAX. А вот уже AJAX через PHP проверить можно. Такие запросы всегда содержат заголовок "X_REQUESTED_WITH" со значением "XMLHttpRequest". Поскольку страницу можно будет загрузить только через AJAX, а браузеры не разрешают AJAX-запросы на чужие сайты, то пользователь сможет открыть такую страницу только с вашего сайта, который в свою очередь ее загрузит только, если находится он во фрейме на вконтакте. Это сообщение отредактировал(а) Arantir - 10.2.2013, 16:11 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
jone31 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 29.11.2008 Репутация: нет Всего: нет |
сейчас используется window == window.top и некоторые её обходят...
если учесть что vk не работает без JS, то и юзеру без JS делать там нечего... Arantir, спасибо надо попробовать с ajax... Это сообщение отредактировал(а) jone31 - 10.2.2013, 18:03 |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
А через vkAPI нельзя никак запросить информацию о странице в которой загружен iframe???
Добавлено через 5 минут и 9 секунд А что даст AJAX? Хоть в главном окне, хоть во фрейме. Приложение запрашивает информацию со своего сервера. В чем разница? -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Вот про это чуть поподробнее. Как можно выкинуть такую проверку? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
В заголовке, который можно проверить. Но заголовки подделать не проблема. Как говорится, нет идеальной защиты, есть только объем средств, нужный для ее взлома. Как минимум, все, кто открывал страницу в браузере, уже в пролете. Наиболее надежный способ - чтобы загрузку инициировал сам сайт, на котором фрейм, неким запросом с некой хеш-подписью, созданной по алгоритму, известному только самому сайту и сайту во фрейме. Вот тогда всякие хацкеры-ламеры ничего не сделают, так как не смогут создать правильную подпись. Я, вообще-то, в приложениях и API вконтакта не разбирался, так что не в курсе о всех тонкостях. Но если существует какой-то способ со стороны VK в обеспечении подлинности запроса, то советую такой способ поискать в инструкциях. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Элементарно. Создаем *.html с
все. -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Ctrl+K в FireFox и можно любой JS выполнить. Да, даже AJAX-запросы... Зайдите на http://api.jquery.com/focusout/ и выполните $("div").load("/index.php"); через консоль. Ох как приколько страничка поломается после этого... -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Чучмек, Тоесть чужая страница имитирует vk? Если в этом самом http:// написать проверку на наличие vk. в адресной строке top.location, не будет ли это решением?
Arantir, Выполнение скрипта в отладчике? В массовом порядке? ![]() Ну я, конечно, понимаю, что ничего принципиально сложного нет. Можно скачать текст скрипта, текст странички, откорректировать его регулярками, поставить автоматическую коррекцию в FireBug и наслаждаться жизнью. Но это предполагает сознательное действие какого-то злоумышленника, предполагает установку дополнительного софта, слежение за выходом новых версий исходников приложения и оперативная коррекция патчилки... Можно пытаться замучить хакера просто автоматически меняя способ упаковки JS кода и периодически изменяя интерфейс клиента с сервером. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
jone31 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 29.11.2008 Репутация: нет Всего: нет |
если сопоставлять логи сервера и метрику, то все происходит с использованием гугло_хрени и оперы(их консоли дают возможности править скрипты страницы)... инфа без учета того что агент можно было подменить...
опера грязно выругалась...
|
||||
|
|||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
Да вроде фрейм не имеет доступа к location , как и к многому другому , при различных хостах у top и frame -------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Да, этого можно было ожидать. Наверное, чтобы наоборот - кто-то не открыл свой злобносайт в фрейме и не наделал пакостей основному сайту. В общем, если сам VK не предоставляет каких-то возможностей для подобной защиты, то вряд ли что-то надежное получится. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
jone31 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 29.11.2008 Репутация: нет Всего: нет |
нашел в VK API auth_key - но пока не совсем понял как эффективно им воспользоваться
если у кого есть какие соображения по этому поводу, прошу поделится... Добавлено через 6 минут и 40 секунд хотя нет, это не то... авторизацию юзера я проверяю и так внутри... Это сообщение отредактировал(а) jone31 - 10.2.2013, 18:18 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |