Запретить показ фрейма по прямой ссылке

12
agru
На сайте с 31.12.2005
Offline
159
2473

Создал для вк ифрейм приложение

Как запретить юзерам открывать его по прямой ссылке на моем домене?

Тоесть нужно чтобы страница открывалась только во фрейме.

Яваскрипт определение фрейма неподходит, надо или пхп или чтото еще

Mik Foxi
На сайте с 02.03.2011
Offline
1176
#1

на пхп никак. только на js. ну разве что смотреть реферрер, чтоб он был равен адресу фрейма.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ Форум на замену серчу: https://foxi.biz/
vob2014
На сайте с 30.03.2014
Offline
91
#2

на js через API ВК можно определять...

другой ход, сделать на флэше, ВК умеет хранить флэш у себя, т.е. проблема вообще отпадет (но будут другие т.к. вместо js надо будет писать на AS3, но он достаточно крутой и там все можно сделать,

по крайней мере сайт что у вас в подписи полностью на флэш AS3 сделать не сложная задача).

...
L
На сайте с 07.12.2007
Offline
351
#3

Можно попробовать стилями уводить страницу за пределы экрана (например, margin-left:-9999px), а в приложении для iframe это отменить так же стилями: body > iframe margin-left:0 !important;

Можно с селекторами CSS3 поиграться

agru
На сайте с 31.12.2005
Offline
159
#4

Может кто знаком с Content-Security-Policy: frame-ancestors 'none'

или другие варианты хотелось бы услышать

D.iK.iJ
На сайте с 26.05.2013
Offline
233
#5

Просто (для ссылок с других сайтов) - проверить реферрер по PHP. Если не с сайта, запретить доступ.

if (substr_count(strtolower(getenv("HTTP_REFERER")), getenv("HTTP_HOST"))!==1) {die("<!DOCTYPE html><html><head><title>Ошибка!</title></head><body><b>Ошибка!</b> Вы пытаетесь смотреть страницу не во фрейме!</body></html>");}

Также, есть решение на Джаваскрипте - проверка, открыт ли документ во фрейме. Что-то наподобие:

if(parent) {
// страница во фрейме
...
}
Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
L
На сайте с 07.12.2007
Offline
351
#6
agru:
Может кто знаком с Content-Security-Policy: frame-ancestors 'none'
или другие варианты хотелось бы услышать

frame-ancestors это из CSP level 2, его ещё браузеры не поддерживают.

И frame-ancestors - это аналог заголовка X-Frame-Options, им можно только разрешать открывать в фрейме перечисленным в нём доменам.

PS: Со стилями не получается, стили родительского документа не распространяются внутрь фрейма.

Использование вместо <iframe> тэга <object> от HTML5 тоже ничего не дало.

agru
На сайте с 31.12.2005
Offline
159
#7

может апач или ngnix умеет ?

Ayavryk
На сайте с 11.10.2003
Offline
209
#8


try {
var e = window.parent.location.hostname;
alert('Это мой домен '+ e);
} catch (err) {
alert('Это чужой домен. Чтение его данных запрещено политикой безопасности. Сейчас вы будете перенаправлены на оригинальную версию ');
window.parent.location.href = 'http://yandex.ru'
}
Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
vob2014
На сайте с 30.03.2014
Offline
91
#9

imho мне кажется именно в первом посте ТС цель не запрет открытия фрейма, а по сути нужен запрет на полноценную работу ифрэйм ВК приложения не будучи зпущенным самим ВК с инициализацией АПИ ВК. То есть нет смысла именно запрещать запуск без ифрейма, по сути ТС нужно всего лишь чтобы АПИ ВК было инициализировано самим ВК. Если нет - то не нужен запрет, нужно просто отобразить надпись инуфу, что эта страница работает только внутри ВК и линк на прилождение на ВК. Тогда постановка задачи ввиде хитрого трюка (только пхп) превратится в банальные js показанные выше. А условия "только пхп" и ничто другое - это просто баловство и не нужный юношеский максимализм. :)

agru
На сайте с 31.12.2005
Offline
159
#10
vob2014:
imho мне кажется именно в первом посте ТС цель не запрет открытия фрейма, а по сути нужен запрет на полноценную работу ифрэйм ВК приложения не будучи зпущенным самим ВК с инициализацией АПИ ВК. То есть нет смысла именно запрещать запуск без ифрейма, по сути ТС нужно всего лишь чтобы АПИ ВК было инициализировано самим ВК. Если нет - то не нужен запрет, нужно просто отобразить надпись инуфу, что эта страница работает только внутри ВК и линк на прилождение на ВК. Тогда постановка задачи ввиде хитрого трюка (только пхп) превратится в банальные js показанные выше. А условия "только пхп" и ничто другое - это просто баловство и не нужный юношеский максимализм. :)

исключение js - это вопрос безопасности. Главная задача - запретить показ приложения вне вк кросбраузерно. Без возможности обхода. Проверка реферера не всегда срабатывает.

Я думаю топик будет интересен многим, поэтому предлагаю продолжить обсуждение.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий