I'm currently implementing an invite system for a website. The website is publicly accessible so anyone can join but the idea here is that when the user registers it will automatically link them up with their friends who are already on the site should they use the code.
Now, I've decided that should someone send out an invite it should not be tied to the email address it was sent to. As the user may wish to register with a different email account. I myself have several which I use for different purposes.
In making this decision though it means that the only identifier is the code itself. The code is alphanumeric and ten characters long so there's a good chance it could be guessed and links could be created between users that shouldn't be there.
I can't see any alternative other than having a second key for the user to enter when retrieving the code that only they know about.
Does anyone have any other suggestions?