- Web applications will be secured from "SQL Injection Attacks" where the attacker enters SQL commands into Web form input fields or URL querystrings to try to manipulate the SQL statement being sent to and from the database. The following methods to avoid SQL injection attacks should be used:
- Use of parameterized queries or stored procedures to access a database as opposed to using string concatenation
- Limit the amount of characters in Web form input fields and URL querystrings to a proper amount
- Validate text input and URL querystrings for improper characters (e.g. apostrophe, dash)
- Do not display errors to the user that contain information about the database or actual source code
Data Transmission Security
When confidential or sensitive data is passed between the end-user and the Web server, the HTTPS (SSL over HTTP) protocol will be used. SSL provides server authentication, data encryption ("over the wire"), and data transmission integrity. The SSL certificate used on the Web server will need to be "trusted" by the Web browsers listed on the CDE’s Minimum Web Browser Requirement Web page.
- Web applications should use minimum privileges to access database objects (i.e. tables, views, stored procedures). For example, if the Web application needs read-only access to a specific database table, the database permissions should be set accordingly as opposed to giving the Web application "admin or owner" rights to the entire database.
- Individual database fields storing confidential or sensitive data (e.g. passwords, social security number) must be stored using encryption techniques.
Passwords whether created by application developers, administrators, or users must meet or be required through validation to meet all of the following parameters. Passwords must:
- Be at least eight characters in length.
- Contain characters from three of the following four categories:
- Uppercase letters (A though Z)
- Lowercase letters (a through z)
- Numbers (0 through 9)
- Special characters (!, @, #, $, ^, &, *, -, =, _, +, ?)
- Not be the same as the logon or user name.