PHP, Javascript, ActiveX, Головные боли - PullRequest
1 голос
/ 04 ноября 2010

Мне нужно надежно получить идентификатор пользователя с ПК с помощью PHP.

Я пытался использовать

gethostbyaddr($_SERVER['REMOTE_ADDR']);

, но это возвращает сетевое имя компьютера, а не то, что онифактически вошел в систему с помощью.

Затем я попытался

var WshShell = new ActiveXObject('WScript.Network');
document.form1.item('uid').value = WshShell.UserName;

, который вернул нужное мне значение, но имеет присущие ему проблемы:

  • безопасность браузера
  • возможность полностью обойти с помощью браузеров, отличных от IE

Есть ли способ получить идентификатор, который я просто не могу найти?

Ответы [ 3 ]

2 голосов
/ 04 ноября 2010

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

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

Вы можете установить печенье, но это нелепо банально подделывать.

См. Например здесь для некоторых хороших ответов о библиотеках аутентификации для PHP.

0 голосов
/ 04 ноября 2010

Вы можете разобраться во всевозможных хитростях на стороне клиента, которые, возможно, будут работать в некоторых сочетаниях операционной системы и браузера. Но, в конце концов, все будет передано на сервер по старому доброму HTTP. Это все, что получит сервер (единственная сторона, на которой у вас есть полный контроль): куча текста. Невозможно определить, пришел ли запрос от вашего модного ActiveX или набран в командной строке telnet.

Конечно, - это способы аутентификации запросов. Это один из способов использования криптографии. Но, опять же, все, что вы когда-либо узнаете, это то, была ли подпись сгенерирована с соответствующим ключом. Вы не можете быть уверены в том, кто пользователь или какой компьютер он использует, все, что вы знаете, это то, что это кто-то получил копию ключа.

Теперь действительно сложно создать систему входа в систему, в которой нет своих пользователей. Насколько я знаю, даже системы на основе OpenID привязывают удаленных пользователей к локальным пользователям. Вы уверены, что это реквизит?

0 голосов
/ 04 ноября 2010

Если в Windows Active Directory работает система с единым входом, рассмотрите возможность получения пользовательских данных через LDAP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...