I have a task to create a poll. The idea behind this poll is to be visible on a website, but without users. You dont need to be logged in user to answer the poll. However what I need is to make it so that after voting once you can't vote twice. This is something not really hard and something I have seen often in news sites.
The general solution for this is the cookie. You store information in the cookie and if they submit an answer you store that information in the cookie and you are all good.
However I want to do something even better - I want to make it so if you open Chrome and vote and then open Mozilla you wont be able to vote again.
The first thing that came to mind was using the IP, but then..what if you have multiple computers on one connection? Like in a big office building?
This means that I will need something that is unique to one specific computer no matter his internet connection.
What came to mind is to use something specific and unique to generate ID for the cookie. This means that by using something unique I will generate an ID which always will be the same for a specific computer, no matter the browser and no matter the connection. You can erase the cookie and then when I create new one it will be created with the same ID and I will be able to recognize that someone with that computer already voted for the poll.
My question is - what is unique to computers which I can access via the browser and how? I am using PHP with Symfony and javascript for Front-end.
Again I will summarize what I want to achieve - some way to allow me to recognize a user (computer) without log-in even if that user deleted all cookies and switches browsers or is on different connections. He can use VPN or move from one country to another one and switch internet providers or anything of that sort...as long as he is on the same computer and that computer hasn't received braking changes (fixes, upgrades, etc.) I need to recognize it.