Reputation: 2126
I have a web app that will be running n several specific target machines. I could have the user select which machine he is on when he logs in, but that is prone to error. Is there a way I can get some unique ID from each PC, store those in a database on my server and then when someone logs in from a particular machine, identify that machine? I thought of IP address but those might change as well due to the nature of our deployment. But is is critical that I know which machine the system is running on.
Note: I am not trying to determine the machine code of a web user's machine as that would be a privacy violation. I KNOW my machines so I was wanting to tie them to the database somehow. This also acts as security for me as I can reject logins from unknown machines.
Thanks for any ideas. I am running Apache with Code Igniter 3 and Centos 6.5
Upvotes: 6
Views: 29307
Reputation: 7822
You could use this as a computer ID:
$computerId = $_SERVER['HTTP_USER_AGENT'].$_SERVER['LOCAL_ADDR'].$_SERVER['LOCAL_PORT'].$_SERVER['REMOTE_ADDR'];
It's not completely fool proof, as the values of $_SERVER
can be faked, however it will still add an extra layer of security that does not rely on cookies.
Upvotes: 3
Reputation: 2728
You can even try getting the MAC Address:
Use this class (https://github.com/BlakeGardner/php-mac-address)
This is a PHP class for MAC address manipulation on top of Unix, Linux and Mac OS X operating systems. it was primarily written to help with spoofing for wireless security audits.
Upvotes: 0
Reputation: 1
I would either
use a value like bin2hex(openssl_random_pseudo_bytes(512))
and set it as a cookie and then check for the cookie
or
use IP based logging like (127.0.0.1) has typed hello
or
MAC Addresses (php libraries for it)
Upvotes: 0
Reputation: 241450
The first time a user hits your site, identify their machine by IP address. Then set a persistent cookie with a unique identifier of your choosing.
The next time they come to the site, you can identify them by the unique identifier cookie that you set previously.
Upvotes: 1
Reputation: 97120
It's not possible without a client component, browser plugin or something similar. The closest alternatives are:
each with their own disadvantages.
Upvotes: 5