@@ -9,53 +9,52 @@ and use the list below as suggestions for a checklist that has been tailored for
99#### 1. Authentication
1010
11111 . Design access control authentication thoroughly up-front
12- 2 . Force all requests to go through access control checks unless public
13- 3 . Do not hard code access controls that are role based
14- 4 . Log all access control events
15- 5 . Use [ Multi-Factor Authentication] [ csmfa ] (MFA) for sensitive or high value transactional accounts
16- 6 . Authentication failure responses should not indicate which part of the authentication data was incorrect.
12+ 2 . Require authentication for all pages and resources, except those specifically intended to be public
13+ 3 . All authentication controls must be enforced on a trusted system
14+ 4 . All authentication controls should fail securely
15+ 5 . Establish and utilize standard, tested, authentication services whenever possible
16+ 6 . If using third party code for authentication inspect the code carefully
17+ to ensure it is not affected by any malicious code
18+ 7 . Use a centralized implementation for all authentication controls
19+ 8 . Segregate authentication logic from the resource being requested and
20+ use redirection to and from the centralized authentication control
21+ 9 . Administrative and account management must be at least as secure as the primary authentication mechanism
22+ 10 . Use [ Multi-Factor Authentication] [ csmfa ] (MFA) for sensitive or high value transactional accounts
23+ 11 . Re-authenticate users prior to performing critical operations
24+ 12 . Enforce account disabling after an established number of invalid login attempts
25+ 13 . Utilize authentication for connections to external systems that involve sensitive information or functions
26+ 14 . Authentication credentials for accessing services external to the application should be stored in a secure store
27+ 15 . Use only HTTP POST requests to transmit authentication credentials
28+ 16 . Force all requests to go through access control checks unless public
29+ 17 . Do not hard code access controls that are role based
30+ 18 . Log all access control events
31+ 19 . Validate the authentication data only on completion of all data input
32+ 20 . Authentication failure responses should not indicate which part of the authentication data was incorrect.
1733 E.g. Through giving different textual response or HTTP response codes
18- 7 . Authentication failure responses should not give away the existent of user accounts allowing the response time to differ,
19- depending on whether a username exist or not. Use a DB transaction that looks for a fake user profile in case the username
20- doesn't exist
21- 8 . Add a random tunable delay for authentication failures to defer brute force attacks and protect against timing attacks
34+ 21 . Authentication failure responses should not give away the existent of user accounts by allowing the response time to
35+ differ, depending on whether a username exist or not. Use a DB transaction that looks for a fake user profile in case the
36+ username doesn't exist
37+ 22 . Add a random tunable delay for authentication failures to defer brute force attacks and protect against timing attacks
2238
2339#### 2. Passwords
2440
25- 1 . Require authentication for all pages and resources, except those specifically intended to be public
26- 2 . All authentication controls must be enforced on a trusted system
27- 3 . Establish and utilize standard, tested, authentication services whenever possible
28- 4 . Use a centralized implementation for all authentication controls
29- 5 . Segregate authentication logic from the resource being requested and
30- use redirection to and from the centralized authentication control
31- 6 . All authentication controls should fail securely
32- 7 . Administrative and account management must be at least as secure as the primary authentication mechanism
33- 8 . If your application manages a credential store, use cryptographically strong one-way salted hashes
34- 9 . Password hashing must be implemented on a trusted system
35- 10 . Validate the authentication data only on completion of all data input
36- 11 . Authentication failure responses should not indicate which part of the authentication data was incorrect
37- 12 . Utilize authentication for connections to external systems that involve sensitive information or functions
38- 13 . Authentication credentials for accessing services external to the application should be stored in a secure store
39- 14 . Use only HTTP POST requests to transmit authentication credentials
40- 15 . Always send non-temporary passwords over an encrypted connection or as encrypted data
41- 16 . Enforce password complexity and length requirements established by policy or regulation
42- 17 . Enforce account disabling after an established number of invalid login attempts
43- 18 . Password reset and changing operations require the same level of controls as account creation and authentication
44- 19 . Password reset questions are deprecated, see [ Choosing and Using Security Questions Cheat Sheet] [ csquestions ] as to why
45- 20 . If using email based resets, only send email to a pre-registered address with a temporary link/password
46- 21 . Temporary passwords and links should have a short expiration time
47- 22 . Enforce the changing of temporary passwords on the next use
48- 23 . Notify users when a password reset occurs
49- 24 . Prevent password re-use
50- 25 . The last use (successful or unsuccessful) of a user account should be reported to the user
41+ 1 . If your application manages a credential store, use cryptographically strong one-way salted hashes
42+ 2 . Password hashing must be implemented on a trusted system
43+ 3 . Always send non-temporary passwords over an encrypted connection or as encrypted data
44+ 4 . Enforce password complexity and length requirements established by policy or regulation
45+ 5 . Password reset and changing operations require the same level of controls as account creation and authentication
46+ 6 . Password reset questions are deprecated, see [ Choosing and Using Security Questions Cheat Sheet] [ csquestions ] as to why
47+ 7 . If using email based resets, only send email to a pre-registered address with a temporary link/password
48+ 8 . Temporary passwords and links should have a short expiration time
49+ 9 . Enforce the changing of temporary passwords on the next use
50+ 10 . Notify users when a password reset occurs
51+ 11 . Prevent password re-use
52+ 12 . The last use (successful or unsuccessful) of a user account should be reported to the user
5153 at their next successful login
52- 26 . Change all vendor-supplied default passwords and user IDs or disable the associated accounts
53- 27 . Re-authenticate users prior to performing critical operations
54- 28 . If using third party code for authentication inspect the code carefully
55- to ensure it is not affected by any malicious code
56- 29 . Password entry should be masked (e.g., on web forms use the input type "password") on the user's screen unless
54+ 13 . Change all vendor-supplied default passwords and user IDs or disable the associated accounts
55+ 14 . Password entry should be masked (e.g., on web forms use the input type "password") on the user's screen unless
5756 temporarily made viewable by the user
58- 30 . Ensure that no credentials are stored in clear text or are easily retrievable in encoded or encrypted forms in the
57+ 15 . Ensure that no credentials are stored in clear text or are easily retrievable in encoded or encrypted forms in the
5958 browser's storage mechanisms
6059
6160#### 3. Cryptographic based authentication
0 commit comments