views:

83

answers:

5

Say you have a pay-site with some online courses. And you want to make sure that one person doesn't just buy access, and then give the username and password to all his friends, so they can do the courses for free.

How would you go about this?

What we've thought of so far:

  • IP tracking
  • SMS password for each entry
  • Max number of runs through each course

Any other suggestions?

A: 

I'm sure some people would try to use cookies (assuming users don't change computers)

pavium
+1  A: 

Associate an IP address with a cookie. Then associate that cookie with the user account and require use of the cookie to login. If the user logs in in with a different IP address then associate that new IP address with the cookie and ask for some sort of verification to authenticate the user.

The problem we see with IP tracking, is that the one person with an account could let his friends use his computer to access the courses. I know this is an improbable scenario, but we're just looking for as many ways to go about this as possible, without it being a hassle for the users who are honest.
peirix
I would consider that to be extremely rare. I imagine it would be so rare that the costs to solve it across the expanse of your architecture may be more than the resultant savings. You should perform a cost analysis in comparison to growth metrics of use of your services to determine if this is something worth persuit.
+1  A: 

There's no way you can absolutely, positively guarantee that users are unique - even if you had some way to uniquely identify users, like biometric data (which you don't), you'd still be unable to be certain the the client wasn't just spoofing that information.

The best you can hope to do is make it a hassle for someone to "cheat" the system. IP+SMS would probably do that, although it'd also probably annoy the heck out of your users (at least, the latter part).

Your best bet is probably just to log IPs used for each account - if the number goes above a certain threshold, flag it for inspection, and close the account if it looks like the info is being widely shared.

Amber
I like the idea of "punishing" the user who's sharing his account with others, as that means he might lose money on the activity.
peirix
+1  A: 

There is no 100% guarantee at all. Someone can just sit next to the user who bought the access and read the site over his shoulder. Your methods are good (but I personally think that SMS-authorization is a little too much), but I'd suggest maximum personalization of the information you provide, so nobody except the payer can benefit from accessing it.

n1313
+3  A: 

It's impossible to get a perfect system to do what you want. You find yourself in a situation where the stronger you make your protection (to defend against cheating customers), the more you annoy all your customers (including the honest ones).

You're going to have to ask yourself at what point the extra protection actually reduces the value of your site to the point that you're losing more honest customers than you're winning customers by converting cheaters into honest (paying) customers.. It might well be that the optimal thing to do is to use cookies, and only take remedial action if you see two concurrent sessions from different IP addresses, since that's fairly likely to be caused by cheating (though not guaranteed; it could be a dual-homed customer).

redtuna
Absolutely agree on the whole annoying honest customers part. We don't want to be another MPAA.. :p
peirix