Sonoma State University
Department of Computer Science
CS-370: Software Design and Development
Programming Assignment 1: Authenticate User

OBJECTIVE

  • Write a server-side Common Gateway Interface (CGI) application that authenticates users with their log-on credentials into a web-based portal.

SPECIFICATIONS

User Interface:
  • New users will be able to register on the web-based portal by entering their email address (this is their username) and a user-defined password while existing users will enter their email address and password to log-on to the portal.
  • The server-side application must be written in Python, Java, Perl, PHP, C, or C++. Please include a Makefile if writing your application in C or C++.
  • Third party authentication software such as Google, Meta, etc. may not be used.
  • Your application must use the MySQL Relational Database Management System (RDBMS).
  • Your program must generate HTML5 compliant output.
Implementation:
  • You may write your Common Gateway Interface (CGI) application in PHP, Python, Perl, Java, C, or C++ (please include a Makefile if writing in C or C++).
  • All form processing must be done on the server-side via CGI.
  • Your application must use the MySQL Relational Database Management System (RDBMS).
  • Your program must generate HTML 5 compliant output. Before generating dynamically-generated web content, create static web pages that you can submit to the World Wide Web Consortium Markup Validation Service at https://validator.w3.org/

SUBMITTING YOUR WORK

  • Please upload your source code (including Makefile if applicable) as a zip or gzipped-tar file.

Programming Assignment 1 Rubric

CRITERIA RATINGS POINTS
Common Gateway Interface (CGI):
Web-base application uses the Common Gateway Interface and runs on the Blue web server in the CS department at Sonoma State University.
Excellent
2 points

Application runs on the Blue web server at Sonoma State University via the Common Gateway Interface. No HTTP warnings or errors occur. The application is written in PHP, Python, Perl, Java, C, or C++.
Satisfactory
1.4 points

The application runs on the Blue web server at Sonoma State University via the Common Gateway Interface but some HTTP warnings occur. No HTTP errors occur. The application is written in PHP, Python, Perl, Java, C, or C++
Needs Improvement
1 point

The program relies solely on client-side Javascript applications for form processing.
Unsatisfactory
0 points

The Common Gateway Interface is not implemented; OR an HTTP error occurred.
2 points
Authentication:
Does the server-side application require user-authentication?
Excellent
4 points

Web-based application requires user-authentication. If a user is logged-in, the web-based application will time-out after five minutes of inactivity. In such cases, the server will prompt the user to authenticate again before continuing. To authenticate, the user must enter their email address and a password or register as a new user with an email address and a password. No third party authentication tools are utilized (e.g. Google, Meta, etc.). No HTTP errors or warnings occur.
Satisfactory
2.8 points

Web-based application requires user-authentication. The web-based application does not time-out after five minutes of inactivity. No third party authentication tools are utilized (e.g. Google, Meta, etc.). No HTTP errors or warnings occur.
Needs Improvement
2 points

Web-based application requires third-party authentication tools (e.g. Google, Meta, etc.).
Unsatisfactory
0 points

No user-authentication software was implemented.
4 points
MySQL implementation:
MySQL is accessed through a database interface on the server side.
Proficient
3 points

MySQL database is accessed via a server side application running on Blue. The server side is able to send read and write requests to update data managed by MySQL. All data is sanitized before reads or writes to the MySQL to ensure no SQL injections can occur.
Needs Improvement
1 point

MySQL database is accessed via a server side application running on Blue. The server side is able to send read and write requests to update data managed by MySQL. No SQL statements are sanitized before sending to the MySQL server. Therefore, an SQL injection can occur!
Unsatisfactory
0 points

MySQL is not accessed on the server-side.
3 point
HTML version 5 compliant output:
Does all dynamically-generated HTML output conform to HTML 5 standard?
Excellent
1 point

All dynamically-generated output is HTML version 5.0 compliant as verified by the HTML5 validator.
Satisfactory
0.7 points

One error occurs in the dynamically-generated HTML output when tested with the HTML5 validator.
Needs Improvement
0.2 points

Two or three errors occur when the dynamic web content is validated with the HTML5 validator.
Below Expectation
0 points

Four or more errors occur in the dynamic web-based output when validated in the HTML validator; OR no web content is output.
1 point
Total points: 10