Достъп само от определени устройства - как?

mvmrik

Well-Known Member
Здравейте, опитвам се да направя нещо - разработил съм една система, в която има различни потребители, влизащи съответно с име и парола. Всичко е както трябва, но има изискване тези потребители да могат да влизат само от определени компютри и телефони. Всеки трябва да може да влиза в профила си само от неговия телефон или компютър.

Чудя се как да го направя това нещо - първо се сетих за MAC адресите, но (поне доколкото разбрах) няма как да стане и MAC адреса не може да се види от външна мрежа. Трябва да става от всякъде, понеже хората пътуват и често ще влизат от телефоните си през интернета на мобилния оператор.

Друг вариант, за който се сетих, е да се праща произволен код на e-mail адреса, който да трябва да се въведе при вход. Този метод ще работи, но е доста неудобен и при всеки вход, ще трябва да се гледа пощата.

Най-лесно ми се вижда да го направя с бисквитки - всеки си има бисквитка в браузъра с уникалния код и влиза директно, а ако влезе от друго устройство, тогава ще му излезе съобщение за активация, а пък кода може да му се прати на e-mail и съответно да се създаде бисквитката за новото устройство. Проблемът на този метод е, че много от потребителите са настроили браузърите си да не помнят история и бисквитки и пак ще трябва всеки път да влизат в пощите си.

Та питането ми е, възможно ли е по някакъв начин да се разпознава устройството (по MAC адрес или по друг начин) или ще трябва да стане по някой от горните варианти? Според мен името и паролата са достатъчно сигурни, паролата е криптирана, но все пак такова е изискването към мен и се очаква да намеря някакво решение.
 
От: Достъп само от определени устройства - как?

С приложение на андроид е лесно ,вземаш мак и го обвързваш с паролата после хеширащ алгоритъм и пращаш.
Друг вариант е с https://en.wikipedia.org/wiki/Iptables .
А при работа само с браузър става доста ограничено и HTTP хедърите са ти единствения източник за обвързване на клиент(устройство) -http://php.net/manual/en/function.getallheaders.php .
Тук може да извлечеш примерно User-Agent: и запишеш в бд при първо влизане ,после при следващо влизане на клиента да сравняваш дадени части . Или IP: по същия начин . От там нататък логиката е само в идеите ти - примерно да разрешиш само първите две IP влизали в сайта да се свързват с даден user и pass или с User-Agent да е влизано минумим 10 последователни пъти и тогава да позволява записване на нов User-Agent в дб и подобни . На java и ActiveX има подобни решения но не са универсални .
 
От: Достъп само от определени устройства - как?


И аз се сетих за това, но всичко трябва да е обвързано с гугъл профили. Явно няма някаква константа, която всяко устройство да притежава и ще трябва да се сравнява по няколко неща.
 
От: Достъп само от определени устройства - как?

Колко са адвансед тия потребители и каква е възможността да решат да злоупотребят?
 
От: Достъп само от определени устройства - как?

От информацията, която си дал и решенията, които обмисляш, струва ми се подходящо да помислиш и за вход с клиентски сертификат - по-удобно решение от бисквитките, но пак няма да елиминира напълно възможността за сменяне на крайното устройство.
 
От: Достъп само от определени устройства - как?

В крайна сметка го направих с e-mail потвърждение, при всеки логин се праща произволен код и се въвежда. Не е особено удобно, но стана добре, понеже не се знае кой от какво устройство ще влезе.
 
От: Достъп само от определени устройства - как?

На времето онлайн банкирането на една от банките в България беше със сертификат, който можеше да се инсталира само на един компютър. От друго устройство не можеш да влизаш. Не знам как се прави, но ако имаш идея от тези неща може да те наведе на някаква идея.
 
От: Достъп само от определени устройства - как?

сертификатите са софтуерни, можеш да ги export/import-неш на друг компютър.

токен, ел.подпис - те са преносими и могат да се използват и на други у-ва.

задачата е да се авторизира потребителя само от един вид хардуерно у-во без опции за ресет, освен през администратора на с-мата по телефон или лична среща и тнт, при повреда по хардуера.

Time-based One-time Password Algorithm (TOTP)

https://winauth.com/ с отметка Encrypt to only be useable on this computer”.

за андроид виж линка към appstore
 

Горе