I have a database with individual contact data for students... this data includes name, address, phone number, birthdate, etc. (no social... that would have made this too easy apparently, ha ha)

I would like to allow their parents to access their data from home, and be able to view and edit it. Obviously, security is a huge priority here; I don't want a creeper gaining access to their address or somesuch.

Are there any methods that I could use that:

  1. Don't require me to generate a code or input new data for them manually (this is just impractical, and requires me manually verifying each student/parent combo).
  2. Could not be easily mined from, say, a facebook account (name and birthdate are both easily accessible for example).
  3. Don't lean on data that is more highly likely to be inaccurate (a street name is much more likely to be misspelled than a last name for example... and by the same token, first names aren't always trustworthy [some people go by a middle name, but might have their first in there, or a nick name, or whatever]).

I'm stumped... I'm hoping there's a technique here I'm not thinking of, but perhaps there is simply no way to do this without making it much too easy for someone to access it.

  • 2
    Note that this is Personally Identifiable Information (PII) and so there are very likely to be legal requirements on how you secure it. Commented Aug 1, 2014 at 11:34
  • Do you want parent's to be able to access this without the student's agreement? If not, then you can generate a secret for each student to transmit to their parents. That way, the introduction stage is handled by a party who is known to be trusted with the student's data, the student. Commented Aug 1, 2014 at 21:46
  • @GrahamHill - You're correct, however as far as I'm aware in my state (in the US), the only law applicable is COPPA, and I'm exempt as a nonprofit. Unless someone knows of something I'm overlooking (which could certainly be the case)?
    – xtraorange
    Commented Aug 1, 2014 at 22:04
  • @MikeSamuel - It's not so much that I'm concerned about the students agreement as I know that many of my students will inevitably fail to get the information to their parents. I think Andy's mailmerge solution would be the better approach in that particular case.
    – xtraorange
    Commented Aug 1, 2014 at 22:08

2 Answers 2


Since you have postal addresses send them a letter via mail merge that contains a long random code. They enter the long random code and perhaps some other information they should know such as D.O.B. to validate they have physical possession of the letter and some knowledge of the student.

This tells you they are:

  • Someone with access to the mailing address
  • Reasonably the parent or guardian if addressed appropriately
  • Or a corrupt postie ;) Or inquisitive sibling...

Once they have passed the initial authentication check require they enter an email address and password. Once this has been verified invalidate the code you mailed them. A unique id - either sequential or a guid - should be generated against each user in the DB. This becomes their unique identifier and you can then associate users who should have access with the record.

Since the code you generate is effectively a password good security practice for storing passwords should be used for storing the code - suggest bcrypt ( http://en.wikipedia.org/wiki/Bcrypt ) or PBKDF2 ( http://en.wikipedia.org/wiki/PBKDF2 ) with a suitable salt and work function.

Another potential approach would be Knowledge Based Authentication ( http://en.wikipedia.org/wiki/Knowledge-based_authentication ) - you ask them things only they would know. This requires you to have accurate records of things they should know! (e.g. all the grades from their childs last report card).

Hope that helps.

Regards Andy

  • @xtraorange what solution are you going with? How is / did it work out?
    – Andy Boura
    Commented Aug 8, 2014 at 16:49
  • Due to a lack of immutable data and my middle schoolers being unreliable, I actually decided not to implement this feature at this time. I just don't see a good way to do it. I should however select your answer as best, as I fear there really isn't going to be a better solution. Thanks for the reminder
    – xtraorange
    Commented Aug 9, 2014 at 1:13

If it were me, I would ask the student to supply the email address(es) for the parent(s), then create accounts for each of those email addresses (if they don't already exist) with access to the student's account. If it's a new account then email the password and the URL to the supplied address. Embedding a complex password into the URL is a better solution.

By supplying the email, the student is explicitly consenting to allowing access to their data as well as providing an identity (email address) for the user and a means of contacting them.

The risk here is that the email containing the password is intercepted - this is a generic problem with supplying credentials and solutions are discussed elsewhere. However in this case, it is possible that the student could supply a secondary authentication token (e.g. retrieved from the application when they login) over an alternate channel at least for the initial access.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .