Study guide
9.3 Secure Coding, Code Review, and Application Testing
CISSP Study Guide Exam
Track your progress as you read
Finished sections get a check mark.
1 Chapter 1: CISSP Orientation, CAT, and Official Source Control
1.1 Credential Scope, CISSP Mindset, and Search Language 1.2 Exam Outline Effective Date and Eight-Domain Map 1.3 CAT Format, 100-150 Items, and Forward-Only Rules 1.4 Passing Grade, Results, Feedback, and Retake Policy 1.5 Experience, Endorsement, and Associate of ISC2 Path 1.6 Pricing, AMF, CPE, and Maintenance Overview
2 Chapter 2: Security and Risk Management
2.1 Professional Ethics, CIA, and Security Governance 2.2 Policies, Standards, Procedures, Guidelines, and Control Ownership 2.3 Legal, Regulatory, Privacy, and Investigation Context 2.4 Risk Identification, Analysis, Treatment, and Reporting 2.5 Business Continuity, BIA, and Recovery Prioritization 2.6 Personnel Security, Training, Awareness, and Culture 2.7 Threat Modeling, Supply Chain Risk, and Third-Party Governance 2.8 Security and Risk Management Case Lab
3 Chapter 3: Asset Security and Data Lifecycle
3.1 Asset and Data Classification, Ownership, and Roles 3.2 Handling Requirements, Labeling, Privacy, and Cross-Border Data 3.3 Data States and Protection Methods: DLP, DRM, and CASB 3.4 Data Lifecycle, Retention, Remanence, and Destruction 3.5 Secure Provisioning, Inventory, and Asset Management 3.6 Asset Security Case Lab
4 Chapter 4: Security Architecture, Engineering, and Cryptography
4.1 Secure Design Principles and Security Models 4.2 Control Selection, System Security, and Architecture Risk 4.3 Cryptography Foundations: Symmetric, Asymmetric, Hashing, and PKI 4.4 Cryptographic Lifecycle, Key Management, and Attack Patterns 4.5 Cloud, Container, IoT, Edge, and Shared Responsibility Architecture 4.6 Physical Site, Facility, and Environmental Security 4.7 Information System Lifecycle Engineering and Retirement 4.8 Architecture and Engineering Case Lab
5 Chapter 5: Communication, Network Security, and Zero Trust
5.1 Network Architecture, OSI/TCP/IP, and Secure Design 5.2 Secure Protocols, Encryption in Transit, and Channel Protection 5.3 Segmentation, Microsegmentation, SDN, VPC, and Zero Trust 5.4 Wireless, Cellular, Remote Access, and Third-Party Connectivity 5.5 Network Components: NAC, IDS/IPS, Firewalls, and Endpoints 5.6 Monitoring, Observability, Capacity, and Resilient Communications 5.7 Communication and Network Security Case Lab
6 Chapter 6: Identity and Access Management
6.1 Identity Proofing, Authentication, Authorization, and Accountability 6.2 Access Control Models: RBAC, MAC, DAC, ABAC, and Risk-Based Access 6.3 Federation, SSO, MFA, Passwordless, and Session Management 6.4 Provisioning, Deprovisioning, JML, and Access Reviews 6.5 Service Accounts, Non-Human Identities, and Privilege Management 6.6 Physical, Logical, Cloud, and Hybrid Access Boundaries 6.7 IAM Case Lab
7 Chapter 7: Security Assessment, Testing, and Audit Strategy
7.1 Assessment, Test, and Audit Strategy Selection 7.2 Control Testing, Vulnerability Assessment, and Penetration Testing 7.3 Log Review, Code Review, Misuse Cases, and Compliance Checks 7.4 Security Process Data, KPIs, KRIs, and Reporting 7.5 Remediation, Exceptions, Risk Acceptance, and Evidence Quality 7.6 Security Assessment and Testing Case Lab
8 Chapter 8: Security Operations, Incident Response, and Resilience
8.1 Investigations, Evidence, Forensics, and Legal Readiness 8.2 Logging, Monitoring, SOC, and Alert Triage 8.3 Configuration, Change, Patch, and Vulnerability Operations 8.4 Incident Management, Containment, Eradication, and Recovery 8.5 Disaster Recovery, Backup, Availability, and Resilience 8.6 Physical Security Operations and Safety 8.7 Security Operations Case Lab
9 Chapter 9: Software Development Security and DevSecOps
9.1 Secure SDLC Governance and Requirements 9.2 Architecture, Threat Modeling, and Design Review 9.3 Secure Coding, Code Review, and Application Testing 9.4 CI/CD, Source Control, and Environment Separation 9.5 Software Supply Chain, Third-Party Components, and Deployment 9.6 DevSecOps Vulnerability Management and Release Risk 9.7 Software Development Security Case Lab
10 Chapter 10: Integrated CISSP Governance Scenario Labs
10.1 Enterprise Risk Committee Decision Lab 10.2 Cloud Migration Security Architecture Lab 10.3 Ransomware Incident and Business Continuity Lab 10.4 Identity Modernization and Zero Trust Lab 10.5 Third-Party Breach and Contract Governance Lab 10.6 Secure SDLC Transformation Lab 10.7 Full CISSP Manager Simulation
11 Chapter 11: Final Review, Endorsement, CPE, and Test-Day Strategy
11.1 Final 45-Day CISSP Study Plan 11.2 CAT Timing and Forward-Only Decision Workflow 11.3 Mixed-Domain Remediation and Manager Mindset Review 11.4 Test-Day Checklist and Pearson VUE Readiness 11.5 Endorsement, Associate Path, and Work Experience Documentation 11.6 CPE, AMF, and Three-Year Maintenance Plan 11.7 CISSP Final Mixed Review
9.3 Secure Coding, Code Review, and Application Testing
Key Takeaways Explain This Topic AI
Secure coding standards should address common defect classes and the approved patterns teams must use to prevent them.
Code review is a control for logic, authorization, secrets, error handling, and maintainability, not only syntax quality.
Application testing should combine automated tools with risk-based manual analysis because no single test type sees every weakness.
Security findings need severity, exploitability, business impact, owner assignment, retesting, and exception handling.
Last updated: May 2026
Building And Verifying Secure Behavior
Secure coding is the practice of using approved patterns that prevent common weaknesses before they enter the codebase. It should be supported by standards, training, libraries, code review, automated checks, and defect management. A manager should not expect every developer to become a security specialist, but the organization should make secure defaults easy and unsafe patterns visible.
Secure coding standards normally address input validation, output encoding, authentication, authorization, session management, cryptography use, secret handling, error handling, logging, file handling, serialization, memory safety, API security, and dependency use. Standards should tell teams what to do in the local technology stack. A standard that says validate input is less useful than one that names approved validation libraries, central authorization helpers, and logging rules.
Many application flaws are not exotic. Injection occurs when untrusted input is interpreted as commands or queries. Broken authorization occurs when users can act on objects or functions they should not access. Cross-site scripting occurs when untrusted content is rendered in a browser without safe handling. Insecure deserialization, weak session handling, unsafe redirects, sensitive data exposure, and missing rate controls remain common because teams often optimize for feature success paths.
Test or review type What it sees well What it may miss
Peer code review Logic, maintainability, authorization intent, risky changes Runtime configuration and some dependency issues
- SAST Source patterns, tainted input paths, insecure API use Business logic and runtime-only behavior
- DAST Running application behavior from outside Hidden code paths and source-level context
- IAST Runtime behavior with code context Coverage gaps when tests do not exercise paths
- SCA Vulnerable or risky third-party components Custom logic flaws and insecure integration
- Fuzzing Input handling crashes and unexpected parser behavior Authorization and business workflow abuse
Penetration testing Chained exploitation and realistic attack paths Full code coverage and routine regression control
Code review should be risk-aware. A change to text styling does not need the same scrutiny as a change to authentication, payment logic, authorization middleware, cryptographic handling, or administrative functions. The review process should require extra attention for security-sensitive files, new external integrations, data model changes, and changes that alter trust boundaries. Pull request templates can prompt reviewers to consider data exposure, secrets, logging, and rollback.
A common management failure is treating code review as proof that a system is secure. Reviewers may be rushed, may lack context, or may miss runtime effects. Automated scanners may also create false positives and false negatives. A strong program layers controls: secure coding standards, branch protection, peer review, static analysis, dependency scanning, test coverage, dynamic testing, and targeted manual assessment for high-risk workflows.
Application testing should match risk and lifecycle stage. Unit tests can verify authorization functions and input validation. Integration tests can verify service-to-service identity and policy enforcement. Static analysis can run early in development. Dynamic scans can run against deployed test environments. Fuzzing may be valuable for parsers, file processors, protocol handlers, and APIs. Penetration testing is best used for higher-risk systems or major releases where chained attacks and business logic matter.
Misuse and abuse-case testing are especially important for CISSP thinking. Normal user stories may say a customer can update an address. Abuse cases ask whether a customer can update another customer's address, bypass approval, replay a request, automate refund attempts, or force error messages to reveal internal state. Security testing must verify intended denial as well as intended success.
Findings need governance. A critical authorization flaw on an internet-facing application should not be buried in a general defect backlog. Findings should include severity, affected assets, exploitability, business impact, evidence, owner, target remediation date, and retest status. If the business accepts a finding temporarily, the exception should state compensating controls, expiration, and the authority who accepted the residual risk.
Checklist for reviewing a security-sensitive change:
Does the change cross a trust boundary or affect privileged behavior?
Are authentication and authorization enforced on the server side?
Are object-level permissions verified, not inferred from user interface controls?
Are inputs validated and outputs encoded in the correct context?
Are secrets excluded from code, logs, images, and test data?
Are errors safe for users but useful for operators?
Are logs sufficient for investigation without exposing sensitive values?
Are tests included for misuse, denied access, and edge cases?
Scenario: a team adds a bulk export function for support staff. The feature passes normal tests, but code review shows that access is checked only on the page that displays the export button. A direct API call can request exports for accounts outside the staff member's region. The correct fix is server-side authorization at the export action and object scope. Hiding buttons is not a security control by itself.
Scenario: a static analysis tool flags hard-coded test credentials in a repository. The manager should ensure the secret is revoked or rotated, repository history exposure is assessed, affected environments are checked, and the coding standard is updated if needed. Closing the finding by deleting only the current line may leave the credential active and exposed in version history.
The CISSP emphasis is not that every tool must be used everywhere. It is that the organization chooses a testing strategy proportionate to risk, uses results to drive remediation, and prevents unresolved critical defects from quietly becoming production risk. Testing is evidence for a decision, not a substitute for ownership.