Author: Dr. Zhijiang Chen (Frostburg State University)
The week moves from core definitions to practical security decisions.
Core reading concept for Week 09.
Core reading concept for Week 09.
Core reading concept for Week 09.
Core reading concept for Week 09.
Students should explain, apply, and evaluate the week’s main security ideas.
Use a realistic scenario to anchor Secure Programming in operational decision-making.
Every application that runs on a network, every operating system, every firmware image represents a body of code that was written by human beings who made decisions under the…
The traditional Software Development Lifecycle (SDLC) — requirements, design, implementation, testing, deployment, maintenance — becomes a Secure SDLC by integrating security…
Threat modeling is a structured approach to identifying security threats, their likelihood and impact, and appropriate countermeasures during the design phase.
STRIDE is the most widely used threat categorization framework for software systems, developed by Microsoft.
The DREAD model provides a risk rating framework for prioritizing identified threats: - D amage: How severe is the damage if exploited?
A buffer overflow occurs when a program writes more data to a buffer (a contiguous block of memory) than it was allocated to hold, overwriting adjacent memory regions.
An integer overflow occurs when an arithmetic operation produces a result outside the range that the integer type can represent.
Format string vulnerabilities arise when user-supplied data is passed directly as the format string argument to functions like printf: An attacker providing format specifiers like…
SQL injection (SQLi) remains one of the most prevalent and impactful web vulnerabilities.
As covered in Chapter 8 from the attacker's perspective, XSS is fundamentally a failure of output encoding.
A race condition (or TOCTOU — Time Of Check to Time Of Use) vulnerability occurs when a program's behavior depends on the relative timing of events in a concurrent environment,…
Many languages provide mechanisms to serialize (convert to bytes) and deserialize (reconstruct from bytes) complex objects for storage or transmission.
A use-after-free vulnerability occurs when a program continues to use a memory pointer after the memory it points to has been freed (deallocated).
All data entering a program from external sources — web forms, API parameters, URL parameters, HTTP headers, file uploads, database data, environment variables — must be treated…
As demonstrated in the SQL injection section, parameterized queries (also called prepared statements) prevent SQL injection by separating code from data.
Output encoding is the complement to input validation: before including any data in output (HTML, JavaScript, CSS, URL, XML, JSON), encode it appropriately for the output context.
Security-sensitive applications must handle errors carefully: - Do not expose internal details (stack traces, database error messages, file paths) to end users in production.
A recurring theme in software security: never roll your own cryptography .
Modern applications depend on dozens or hundreds of third-party libraries.
Static Application Security Testing (SAST) tools analyze source code (or compiled bytecode) without executing the program, looking for patterns that indicate security…
Vocabulary becomes useful when students can connect terms to scenarios and evidence.
Comparing related ideas helps students avoid shallow memorization.
Students should translate concepts into a defensible security decision.
Retrieval practice should ask students to define, compare, apply, and evaluate.
The reading should transfer into evidence-based lab work and written explanations.
The central takeaway from Week 9 is to reason from risk to evidence to action.