Original Post
So, I've had quite a problem with security on a site of mine. The biggest problem is that users obtain multiple accounts and use their second accounts to gain an unfair advantage via funneling cash from one account into the next. I started hashing out some simple logic to help prevent this, and I'd like some feedback before I try incorporating it into my code: Step 1 - Watch all money transactions between accounts and log each transaction. Yes, this will require millions, if not billions of rows in a single table of my database, but I can then go back once every 2-3 days, check the top 10% or top 3000 transactions (whichever is less) and... with a little help from an IP log, see if a suspicious amount of money is going from 1 IP to an identical IP consistantly (note, there may be two transactions between player a and player b, but both transactions would get stored as a running total). I wouldn't check every transaction in the log, as some people may share IPs for one reason or another, but if there is a huge money transfer say... 2 weeks into the game and the accounts have mathching IP's, then I believe there is enough evidence to say something is up. If so, I start banning all accounts associated with the IP in question. Step 2 - When a user registers, check for matching IP's/Passwords. If a match is found with an IP/Password, immediate start banning all accounts associated with the IP. Step 3 - Look through the IP log and find all duplicated IP's. Once found, check how many times this IP has logged into the system under each account name. If, after 2 weeks of up time, an IP associated with one or more accounts pops up that has been logged into more than once a day on under accounts, ban all accounts associated with this IP. Step 4 - Once an IP logs out under one username, set a timer which prevents the user from logging back in under that IP for 5-10 minutes. Thus, if a user sells everything he has in an attempt to log-in under a different name and steal it from himself... this timer should give players enough time to get first grabs. Let me know what you guys think.