blob: cf677fcbfd654ff27df345e4fac08483bbada5f4 [file] [log] [blame]
#summary Protecting against unauthorized use.
#labels Importance-Overview,Phase-Requirements,Contents-Draft
==Security==
_Melange can only have moderate security..._
Melange will use google account log ins extensively. Because of various sophisticated (and some less sophisticated) forms of malware, each google account-password combination cannot be considered as having high security - particularly given the large numbers of users. For example, ''an admin in a mentoring organisation may work on a compromised machine and accidentally reveal his or her google account password''. This could be used to maliciously change the delivery addresses for the mentor organisation, change 'payment not required' to 'not received yet' - if Melange tracks that - and for other more devious acts. It needs to be understood in the design that the system as a whole is medium to low in security, and parts involving decisions on real money must be kept cleanly outside melange itself.
Exactly where that clean dividing line is needs very careful thought and input from developers with sound security experience. The security 'dividing line' creates a need to at times be able to generate reports, e.g. lists of people who are apparently to be paid, that can be exported to a more secure system from which payments can actually be made.
There are also important security issues with regard to html in responses. A general filter will be in place to prevent, for example, a student's or an organisation's application containing javascript.
==Security Thinking==
Improving our security awareness will also help in other ways. For example:
* Analysis of logs for 'suspicious activity' will help us be more aware of how Melange is actually being used. _But logs are hard to get and analyse currently_
* Becoming more organised about manual testing to test for security issues will help us with other testing too.
* Supporting GSoC orgs in their security measures (allowing large orgs to pass PGP keys to verify mentor sign up) will lead to a better Melange in other ways too. _This was the essential content of Issue 385, a request for an additional text field._
The issue of security isn't entirely theoretical. In 2008 a large number of GSoC organizations were approached by several people whom they 'did not know' asking to be mentors, one of whom may have been trying to impersonate Google's David Anderson, hence the !notme botcommand on #gsoc.
_Edit Hint: Move the two security sections to a new page and keep this page just for ACLs?_
===Some Security Links===
* [https://buildsecurityin.us-cert.gov/daisy/bsi/articles/best-practices.html US Gvt Software Security "Best Practices"] - Looks a bit long wordy.
* [http://code.google.com/p/doctype/wiki/Articles Google's guide to XSS] - Looks very good and to the point.
==Access Model==
_Different users/roles have different permissions. They even vary over time._
# It is probably not possible to fully designate all the permissions and roles up front. For example, a role as a mentor is not the same as a role as someone-who-is-attending-mentor-summit. In an umbrella organisation with say > 20 active projects a super admin may have oversight over all proposals and projects for that org, whereas a sub admin might have oversight over more restricted areas.
# A clean design factoring separates access rights from page display code. A proposal is to have a central access control mechanism that, given a field identifier and a request (probably HTTP request) can tell ''for this request'' whether:
* The field can be viewed at all.
* The field is read only.
* The field can be modified.
It's expected that pages will share some centrally provided formatting routines that automatically choose whether to show a field as an editable or non editable box based on the permissions.
A highly privileged user may drop down to a lower role to see a page as a lower user would see it. Many pages may be read-only by default, with the option to open an editable view available to sufficiently authorised users.
==Terms of Use==
_Terms-of-Use figure in the access control_
The access model is closely tied into signing up to the terms of use. The results of the terms of use question will figure in access control logic.