2015-12-24 8 views
3

Я работаю над приложением, и есть страница, которую я только хочу, чтобы это было доступно для пользователей, подключающихся из iPhone устройств ..Как предотвратить агент пользователя, чтобы быть изменен пользователем

Как мы знаем, пользователь может изменить пользовательский агент со стороны клиента или через эмулятор браузера, поэтому я хочу знать, есть ли способ предотвратить его, пожалуйста?

Примечание: Мне удалось предотвратить это после входа пользователя на мой сайт, сохранив пользовательский агент браузера в сеансе во время входа в систему. Так что даже если пользователь изменит пользовательский агент после этого, я буду только рассмотрите предыдущий пользовательский агент, который я сохранил в сеансе во время входа в систему.

Однако, что может не сработать, если пользователь изменяет пользовательский агент на «iphone» с помощью эмулятора перед вызовом моего веб-сайта и созданием сессия.

Можете ли вы помочь мне с этим, пожалуйста? Спасибо,

+5

Вы не можете этого предотвратить. – sstan

+3

У вас будет много шансов на успех, так как я бы заказал вам больше не дышать ... –

ответ

3

Нет надежного способа проверить User-Agent клиента. В лучшем случае вы можете сделать выводы, используя другую информацию о своем браузере, например. если они говорят, что они iPhone, но у них есть окно экрана/браузера 1920x1080, что-то не так. Но я бы не рекомендовал это.

+2

совершенно бесполезно в любом случае. для обнаружения таких вещей потребуется javascript, который в любом случае находится под контролем пользователя.если они собираются зайти так далеко, чтобы взломать UA на баржу на сайт, ничто не остановит их от взлома кода обнаружения JS, чтобы просто сказать «да, это iphone» –

2

Простой ответ - вы не можете.

Однако вы можете обнаружить, что пользователь просматривает на мобильном устройстве с использованием мультимедийных запросов CSS, которые можно использовать для отображения/скрытия предупреждения о том, что страница доступна только для мобильных устройств.

Это все равно не остановит людей, подменяющих агент пользователя, и вы ничего не можете с этим поделать.

0

Трюк, который может работать, должен проверить navigator.platform. See this post

Но если кто-то действительно хочет увидеть эту страницу без iPhone, Javascript небезопасен.

+0

. Однако вы должны знать, что это свойство устарело, https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID/platform –

0

Обратите внимание, непроверенное на iPhone, хотя возвращает ожидаемые результаты фильтрации Webkit, Moz, Ms префиксов в браузерах Use Jquery to detect IE, then redirect, How to target only one browser?

Попробуйте проверить для -apple префикса в document.body.style

if ("AppleUserSelect" in document.body.style) { 
    // do stuff 
} 

См Vendor-prefixed CSS Property Overview

0

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

Кроме того, поиск «отпечатка пальца браузера» в Google может помочь вам.

0

Спасибо всем за ответ. Чтобы быть в стороне от сохранения, я подумаю, что если кто-то намеревается получить доступ к этой странице, может понюхать и изменить пользовательский агент.

Смежные вопросы