Code Review Checklist¶
| CATEGORY | DESCRIPTION | 
|---|---|
| General | Are there backdoor/unexposed business logic classes? | 
| Business Logic and | Are there unused configurations related to business logic? | 
| Business Logic and | If request parameters are used to identify business logic methods, is there a proper mapping of user privileges and methods/actions allowed to them? | 
| Business Logic and | Check if unexposed instance variables are present in form objects that get bound to user inputs.If present, check if they have default values. | 
| Business Logic and | Check if unexposed instance variables present in form objects that get bound to user inputs. If | 
| Authorization | Is the placement of authentication and authorization check correct? | 
| Authorization | Is there execution stopped/terminated after for invalid request? I.e. when authentication/autho- | 
| Authorization | Are the checks correct implemented? Is there any backdoor parameter? | 
| Authorization | Is the check applied on all the required files and folder within web root directory? | 
| Authorization | Are security checks placed before processing inputs? | 
| Business Logic and | Check if unexposed instance variables are present in form objects that get bound to user inputs. | 
| Business Logic and | Check if unexposed instance variables present in form objects that get bound to user inputs. If | 
| Authorization | Is there execution stopped/terminated after for invalid request? I.e. when authentication/autho- | 
| Business Logic and | Are the checks correct implemented? Is there any backdoor parameter? | 
| Business Logic and | Is the check applied on all the required files and folder within web root directory? | 
| Business Logic and | Is there any default configuration like Access- ALL? | 
| Business Logic and | Does the configuration get applied to all files and users? | 
| Authorization | Incase of container-managed authentication - Is the authentication based on web methods only? | 
| Authorization | Incase of container-managed authentication - Does the authentication get applied on all | 
| Session | Does the design handle sessions securely? | 
| Authorization | Incase of container-managed authentication - Is the authentication based on web methods only? | 
| Authorization | Is Password Complexity Check enforced on the password? | 
| Cryptography | Is password stored in an encrypted format? | 
| Authorization | Is password disclosed to user/written to a file/logs/console? | 
| Cryptography | Are database credentials stored in an encrypted format | 
| Business Logic and | Does the design support weak data stores like flat files | 
| Business Logic and | Does the centralized validation get applied to all requests and all the inputs? | 
| Business Logic and | Does the centralized validation check block all the special characters? | 
| Business Logic and | Does are there any special kind of request skipped from validation? | 
| Business Logic and | Does the design maintain any exclusion list for parameters or features from being validated? | 
| Imput Validation | Are all the untrusted inputs validated? | 
| Cryptography | Is the data sent on encrypted channel? Does the application use HTTPClient for making external | 
| Session | Does the design involve session sharing between components/modules? Is session validated correctly on both ends? | 
| Business Logic and | Does the design use any elevated OS/system privileges for external connections/commands? | 
| Business Logic and | Is there any known flaw(s) in API’s/Technology used? For eg: DWR | 
| Business Logic and | Does the design framework provide any inbuilt security control? Like <%: %> in ASP.NET MVC? Is | 
| Business Logic and | Are privileges reduce whenever possible? | 
| Business Logic and | Is the program designed to fail gracefully? | 
| Logging and | Are logs logging personal information, passwords or other sensitive information? | 
| Logging and | Do audit logs log connection attempts (both successful and failures)? | 
| Logging and | Is there a process(s) in place to read audit logs for unintended/malicious behaviors? | 
| Cryptography | Is all PI and sensitive information being sent over the network encrypted form. | 
| Authorization | Does application design call for server authentication (anti-spoofing measure)? | 
| Authorization | Does application support password expiration? | 
| Cryptography | Does application use custom schemes for hashing and or cryptographic? | 
| Cryptography | Are cryptographic functions used by the application the most recent version of these protocols, | 
| General | Are external libraries, tools, plugins used by the application functions the most recent version of | 
| General | Classes that contain security secrets (like passwords) are only accessible through protected API’s | 
| Cryptography | Does are there any special kind of request skipped from validation? | 
| General | Classes that contain security secrets (like passwords) are only accessible through protected API’s | 
| Cryptography | Keys are not held in code. | 
| General | Plain text secrets are not stored in memory for extended periods of time. | 
| General | Array bounds are checked. | 
| User Management | User and role based privileges are documented | 
| General | All sensitive information used by application has been identified | 
| User Management | Authentication cookies are not persisted | 
| User Management | Authentication cookies are encrypted | 
| User Management | Authentication credentials are not passed by HTTP GET | 
| User Management | Authorization checks are granular (page and directory level) | 
| User Management | Authorization based on clearly defined roles | 
| User Management | Authorization works properly and cannot be circumvented by parameter manipulation | 
| User Management | Authorization cannot be bypassed by cookie manipulation | 
| Session | No session parameters are passed in URLs | 
| Session | Session cookies expire in a reasonable short time | 
| Session | Session cookies are encrypted | 
| Session | Session data is validated | 
| Session | Session id is complex | 
| Session | Session storage is secure | 
| Session | Session inactivity timeouts are enforced | 
| Data Management | Data is validated on server side | 
| Data Management | HTTP headers are validated for each request | 
| Business Logic and | Are all of the entry points and trust boundaries identified by the design and are in risk analysis | 
| Data Management | Is all XML input data validated against an agreed schema? | 
| Data Management | Is output that contains untrusted data supplied input have the correct type of encoding (URL | 
| Data Management | Has the correct encoding been applied to all data being output by the application | 
| Web Services | Web service has documentation protocol is disable if the application does not need dynamic | 
| Web Services | Web service endpoints address in Web Services Description Language (WSDL) is checked for validity | 
| Web Services | Web service protocols that are unnecessary are disable (HTTP GET and HTTP POST |