TK Study

Software Engineering › Notes › Secure Software Architecture (Year 12)

Secure Software Architecture (Year 12)

Describe the benefits of developing secure software

Fundamental software development steps for secure code

Fundamental software design security concepts (six words)

Cryptography and sandboxing in 'security by design'

Privacy by design (syllabus: three parts)

Test and evaluate security and resilience

Code security strategies: code review, SAST, DAST, vulnerability assessment, pen testing

Defensive data input handling: validation, sanitisation, error handling

Safe APIs to minimise vulnerabilities

Efficient execution: memory, session and exception management

User action controls: broken authentication, XSS, CSRF, forwarding, race conditions

File attacks and side-channel attacks

Part 2. School notes (Canvas, 12SENX2) by syllabus dot point

Corrections are marked in the text. Anything not marked is the school wording.

Describe the benefits of developing secure software, including data protection and minimising cyber-attacks and vulnerabilities.

Developing secure software is vital in an evolving landscape of new threats. Secure software protects sensitive information against malicious activities. It safeguards users and organisations to enhance the overall trustworthiness and reliability of the product.

Data Protection

Secure software ensures data is handled and stored to prevent unauthorised manipulation and loss.

Encryption

Encryption is converting data into a code to prevent unauthorised access. It ensures that information is only accessible to those with the correct decryption key and unreadable to anyone without it.

E.g.: AES-256 encryption

Access Control

Access controls are security measures that regulate who can view or modify data within a system, ensuring that sensitive information is only accessible to authorised individuals.

E.g.: Role-based access control to limit what students/teachers can see on Canvas pages

Data Integrity

Data integrity refers to the accuracy and consistency of data over its lifecycle. It involves protecting data from being altered or corrupted.

Minimising Cyber Attacks and Vulnerabilities

Regular Security Audits

Securing Coding Practices

Securing coding practices are a set of guidelines that developers follow to write code resistant to common vulnerabilities such as SQL injection, XSS and buffer overflows

E.g.: The usages of validation and sanitisation of data before user input gets stored

Patch Management

Patch Management is the process of regularly updating software to fix known vulnerabilities.

E.g.: An automated patch management system to ensure all software is updated with its latest security patch.

Interpret and apply fundamental software development steps to develop secure code, including requirements definition, determining specifications, design, development, integration, testing and debugging, installation and maintenance.

Requirement Definition

The requirement definition involves gathering and documenting the software's functional and non-functional requirements.

Client Scenario:

Understanding the client's needs and expectations regarding security features. This involves meeting the client to discuss their requirements and the security threats relevant to their context.

Environment Specifications:

Defining the operational environment, including hardware, software, and network considerations, to ensure security compatibility. This step involves assessing the current environment to identify any security gaps that must be addressed.

List of Objectives:

Creating a comprehensive list of specific, measurable security objectives that the software must achieve. E.g.: Data encryption, access controls.

Determining Specifications

Determining specifications involves creating a detailed description of the software's functionality and technical requirements, focusing on how it will meet the defined security needs.

Technical Requirements:

Defining specific technical requirements, such as encryption standards and data handling protocols, to form the backbone of robust, effective software.

Performance Criteria:

Establishing security-related performance benchmarks, such as response times for security features and the capacity to handle security events,

Compliance Standards:

Identifying and incorporating relevant security compliance standards that the software must adhere to, such as GDPR.

Input Process Output Model [IPO]:

IPO helps understand how data flows through the system and where security controls need to be applied.

Gantt Charts:

The Gantt chart provides a visual timeline of the project, helping to ensure that each task is completed on time and security milestones are met.

Design

The design phase involves creating a blueprint for the software, including architecture, data flow, and user interfaces, while embedding security principles.

System Architecture:

Designing a secure architecture that incorporates layers of security, such as firewalls, encryption, and secure access points.

Modelling Tools:

Structure Chart:

Used to represent the hierarchy and relationships between modules in the software, ensuring that secure data flow and control mechanisms are clearly defined.

Class Diagram:

Represents the system's classes, attributes, methods, and relationships, with attention to secure data handling and encapsulation of sensitive information.

Data Flow Diagram (DFD):

Maps out how data moves through the system, identifying where data must be protected during transmission and processing.

UI Design:

Ensuring the user interface supports secure interactions, including secure login processes and protection against unauthorised access.

Storyboards:

Storyboards visually represent a user’s interaction with the system to help develop UI, focusing on secure navigation and intuitive UX.

Data Dictionaries:

Develop a data dictionary to document all the data elements. The data dictionary ensures that data is consistently, efficiently and securely handled throughout the system, such as storing text in a field meant for numbers.

Pseudocode:

Pseudocode helps ensure that security measures, such as input validation and error handling, are planned and implemented correctly.

Logbooks:

Maintaining a logbook to document decisions, design changes, and security considerations throughout the design phase.

Development

The development phase is where the software is coded, with an emphasis on secure coding practices to prevent vulnerabilities.

Integration

Integration involves combining individual components into a fully functioning system and ensuring that security controls work across the system. It is tested through integration testing

Testing and Debugging

Check if the program runs smoothly and fits the requirements. It involves identifying and resolving issues, focusing on uncovering security vulnerabilities.

Installation

The installation phase involves deploying the software in a production environment. Secure configuration applied during installation helps maintain the software’s integrity and confidentiality from the start. Tests will be performed after installation to verify the functionality of the software.

E.g.: Setting strong passwords, disabling unnecessary services, and configuring firewalls

Maintenance

Maintenance involves ongoing updates and software monitoring to address new security threats.

Security Patching

Monitoring

Continuously monitoring the software for security breaches or unusual activity, allowing for a quick response.

Incident Response:

Having a plan to respond to security incidents promptly minimises the impact of any breaches.

Describe how the capabilities and experience of end users influence the secure design features of software.

Balance is needed between usability and security.

User Capability

User capabilities refer to the technical knowledge that end users possess.

Simplified Security Controls

Security features must be straightforward to use for users with limited technical skills. E.g.: Automating complex security tasks, providing clear instructions

Guided Processes

Software should guide users through security-related processes, such as setting up 2FA or managing permissions, to ensure they do not inadvertently compromise security.

Role-Based Access [RBAC]

Implementing RBAC can help tailor security features to the user's level of expertise, granting more power to experienced users while limiting potential risks for less experienced users.

User Experience

UX levels refer to users' familiarity with similar software or security practices. Users with varying experience levels may require different approaches to secure design.

Customisable Security Settings

More experienced users may prefer customisable security settings that allow them to tailor the software to their needs. E.g.: selecting encryption methods.

Default Security Settings

For less experienced users, secure default settings can protect the user without requiring extensive configuration. These settings should be robust enough to prevent common security issues while remaining easy to use.

Training and Support

Providing training materials and support options, such as tutorials or customer support services, helps users of all experience levels understand and use the software's security features.

Usability vs. Security

While security is paramount, the software must also be usable by its intended audience.

Minimising User Friction

Security features should minimise disruption to UX.

E.g.: streamlining authentication processes

Transparency of Security Features

Providing straightforward but non-intrusive notifications about security events or updates helps keep users informed without overwhelming them.

Adaptive Security

Adaptive security measures can be adjusted based on user behaviour and risk levels.

E.g.: the software might prompt additional verification if unusual activity is detected

When developing programming code, explore fundamental software design security concepts, including confidentiality, integrity, availability, authentication, authorisation, and accountability.

Confidentiality

Confidentiality ensures that sensitive information is accessible only to those authorised to view it. In web applications, this involves encrypting data and securing communications.

Integrity

Integrity ensures that data is accurate and has not been tampered with.

E.g. hashing algorithms can verify data integrity.

Availability

Availability ensures that systems and data are accessible to authorised users when needed.

E.g. rate limiting can be implemented to prevent DoS attacks.

Authentication

Authentication is the process of verifying a user's identity.

E.g: Username and password system

Authorisation

Authorisation determines what an authenticated user is allowed to do.

E.g.: RBAC system and Attribute-based access control [ABAC] system

Accountability

Accountability ensures that actions can be traced back to the responsible user.

E.g. logging user action.

Apply security features incorporated into software, including data protection, security, privacy and regulatory compliance.

Data Protection

Data protection is an approach to safeguarding data from vulnerabilities while ensuring its confidentiality, integrity, and availability. It involves implementing various security measures to protect data throughout its lifecycle, whether stored, processed, or transmitted.

Encryption - prevents unauthorised access – e.g.: AES for data storage, TLS for data transmission.

Access Controls - Ensure only authorised personnel can access sensitive data – e.g.: RBAC

Backups

Regularly back up data to secure locations to prevent data loss due to accidental deletion, corruption, or attacks like ransomware

Security

Software security protects users from threats, ensuring their data and interactions with the software remain safe. This involves implementing various security measures, such as

Privacy

Privacy in secure software protects an individual's personal data and information.

Data Minimisation

Stores only what is necessary to prevent privacy breaches.

User Consent

Obtaining a user from the user client of obtaining permissions before collecting or processing data. Creating UI that has buttons or checkboxes for a consent form.

Data Access Controls

Regulatory Compliance

Achieving regulatory compliance means aligning with legal and regulatory guidelines applicable to the region.

Compliance Audits

Regularly conduct audits to ensure that the software complies with relevant regulations.

Data Retention Policies

Implement data retention policies that comply with regulations, specifying how long data is stored and when it should be deleted.

User Consent

Ensure users consent before their data is collected, processed, or shared. This is especially important for sensitive personal data.

Use and explain the contribution of cryptography and sandboxing to the ‘security by design’ approach in developing software solutions.

Security by design

The ‘security by design’ approach involves integrating security measures into the software development process rather than adding them as an afterthought.

Cryptography

Cryptography secures information by transforming it into an unreadable format that can only be deciphered with the correct key. This technique protects sensitive data and ensures its confidentiality, integrity, and authenticity.

Contribution to ‘Security by Design’:

Confidentiality

Cryptography ensures that sensitive information remains private by encrypting data to only be accessible to authorised users.

Integrity

Cryptographic techniques, such as hashing, verify that data has not been altered during transmission or storage.

Authentication

Cryptography is used in authentication processes to verify the identities of users.

Non-repudiation

Digital signatures, a form of cryptographic evidence, provide proof of the origin and integrity of data, preventing parties from denying their actions.

Sandboxing

Sandboxing is a security mechanism that isolates running processes, limiting their access to the system and preventing them from making permanent changes. Sandbox can run applications in isolation to test untrusted code in a controlled environment, containing any malicious behaviours in the sandbox without risking the entire system’s security.

E.g.: Python subprocess module

Use and explain the 'privacy by design' approach in the development of software solutions, including a proactive not reactive approach, embed privacy into design, respect for user privacy

The main principles of privacy by design help protect users’ personal information and comply with privacy regulations.

Embed privacy into design

Embedding privacy into the design means that privacy measures are integrated directly into the software's architecture, ensuring privacy is considered at every step of the development process. Personal data collection should be minimised to reduce the risk of data exposure.

Proactive, not reactive approach

Instead of reacting to privacy breaches after they have been detected, a proactive approach ensures that potential privacy issues are mitigated before they occur. In the initial stages of the software development cycle, privacy impact assessments (PIAs) are conducted to identify and evaluate potential risks.

E.g.: data anonymisation, data minimisation, encryption

Respect for user privacy

Respecting user privacy is user-centric. It means giving users active control over their data (edit, delete, export) and ensuring transparency in handling their data. Users should know how their data are collected, processed, and stored through understandable privacy policies.

E.g.:

Test and evaluate the security and resilience of software by determining vulnerabilities, hardening systems, handling breaches, maintaining business continuity and conducting disaster recovery.

Testing and evaluating software security and resilience ensure systems remain robust against attacks and recover quickly to maintain business continuity. This process involves determining vulnerabilities, hardening systems, handling breaches, and implementing disaster recovery plans.

Determining Vulnerabilities

Vulnerabilities are weaknesses in software that attackers can exploit.

Penetration Testing [Pen Testing]

Pen Testing involves ethical hackers attempting to exploit system weaknesses to identify potential vulnerabilities before attackers do.

Automated Vulnerability Scanning

Tools like Nessus scan systems for known vulnerabilities.

Code Audits and Reviews

E.g.: Financial institutions continuously automate vulnerability scanning to detect vulnerabilities. Periodic pen testing simulates real-world attack scenarios, allowing the organisation to discover and fix vulnerabilities before attackers can exploit them.

Hardening Systems

Hardening involves securing a system by reducing its potential attack surface.

Minimising Attack Surface

Remove unnecessary services, ports, applications, and features to reduce the points of entry for attackers.

Regular Patching and Updates

E.g.: A global tech company enforces least-privilege access control policies and regularly patches its systems using automated tools.

Handling Breaches

A security breach occurs when an attacker gains unauthorised access to a system. Effectively handling a breach involves detecting, containing, and mitigating the damage caused.

Incident Response Teams [IRTs]

Dedicated teams trained to detect, contain, and mitigate security breaches. These teams follow incident response plans, which outline procedures for addressing breaches.

Containment and Mitigation

When a breach is detected, affected systems are isolated to prevent the attacker from moving laterally within the network. Mitigation involves fixing the exploited vulnerability and preventing further attacks.

Forensic Investigation

After containment, forensic investigators analyse logs to determine how the breach occurred and what data was compromised.

Maintaining Business Continuity

Business continuity ensures that operational uptime is maintained despite system disruptions.

Redundancy and Failover

Critical systems have backups that automatically take over in a failure. Cloud-based failover systems ensure that if one server goes down, another seamlessly takes over.

Data Backups

Regular backups ensure that the organisation can restore its systems in case of a data loss. Cloud backups or off-site storage ensure that data is protected even if the physical infrastructure is compromised.

Business Continuity Plans (BCPs)

BCPs outline how to maintain operations during a system outage. These plans include steps for failover, key personnel assignments, and system recovery.

E.g.:

An e-commerce platform mirrors user data with failsafe servers, routing customers through the failsafe server in case of downtime to allow customers to make purchases during system failure.

Conducting Disaster Recovery

Disaster recovery focuses on restoring systems after a significant event, such as a security breach. The aim is to recover quickly and minimise long-term impact.

Disaster Recovery Plans (DRPs)

A DRP includes the steps needed to restore critical systems and services.

Backup Restoration

Backup Restoration should be tested regularly to ensure it can be used in data loss events. Offsite or cloud backups are commonly used for redundancy.

Recovery Time Objective (RTO) and Recovery Point Objective (RPO)

Organisations set goals for how quickly services must be restored (RTO) and how much data loss is acceptable (RPO). These metrics help define recovery processes and ensure that critical services are restored within acceptable timeframes.

E.g.:

A bank performs regular disaster recovery drills to ensure it can restore operations within minutes of a failure. Data is mirrored across multiple servers, ensuring that the most recent transactions can be recovered and no critical data is lost.

Apply and evaluate strategies used by software developers to manage the security of programming code, including code review, static application security testing (SAST), dynamic application security testing (DAST), vulnerability assessment and penetration testing.

Code review

Programmers overlook errors within their code. In a professional setting, colleagues run code to identify errors or mistakes, called a Code Review. Generally, these are done in the text through comments.

SAST [Static Application Testing]

SAST is a passive testing method that examines the codebase without execution. It searches for matching vulnerability patterns it has previously identified. SAST is fast and does not require time or resources to execute the program.

E.g.: Bandit on Python

DAST [Dynamic Application Testing]

DAST is a black box testing method that evaluates an application's security while running. It simulates external attacks on the application to identify vulnerabilities that attackers could exploit by sending inputs and running the application.

E.g.: OWASP ZAP

SAST DAST
Source Code is Required A running application is required
Vulnerabilities found earlier in development are less expensive to fix Vulnerabilities found later in development are more expensive to fix
Unable to identify Timing and Environment-related issues Can identify Run-Time and Environment-Related Issues.
Pre-code check-in Check More extensive testing can be done
Nightly Scans
High compatibility with all software

Vulnerability assessment

The Vulnerability Assessment process involves identifying, quantifying, and prioritising vulnerabilities within a system.

E.g. automatic load testing and manual integration testing to test XSS Vulnerabilities

Design, develop and implement code using defensive data input handling practices, including input validation, sanitisation and error handling.

Input Validation

Type Checking: Ensure the input is of the expected data

Length Checking: Restrict input data length

Range Checking: Validate that numerical inputs fall within an expected range

Mandatory Fields:  Ensure that required fields are not left blank.

Sanitisation

Error Handling

In Python, error-handling messages can be used with the print() function to help log errors

Design, develop and implement a safe application programming interface (API) to minimise software vulnerabilities.

An application programming interface (API) is the intermediary that allows two software applications to interact. It includes a set of rules, protocols, and definitions that determine how API responses should be formatted.

Design, develop, and implement code that considers efficient execution for the user, including memory management, session management, and exception management.

Memory Management

Efficient memory management optimises system resources, preventing memory overconsumption and potential system crashes. Programmers should avoid creating unnecessary objects.

Session Management

Session management helps maintain user state across multiple requests. Efficient session management ensures that resources are not overused and user data is handled securely. Implementing session timeouts reduces memory consumption by closing inactive sessions. Only essential information should be stored in sessions to minimise the head.

Exception Management

Proper exception management ensures that an application can reliably handle errors without crashing or exposing sensitive information to users.

Design, develop and implement secure code to minimise vulnerabilities in user action controls, including broken authentication, session management, cross-site scripting (XSS), cross-site request forgery (CSRF), invalid forwarding and redirecting and race conditions.

Broken Authentication

Broken authentication occurs when authentication mechanisms are not implemented securely.

E.g.: Weak password, password insecure storage, password reuse

Mitigation strategies: enforce strong password policies

Session Management

Session management controls how sessions are created, maintained, and destroyed. Insecure session management can lead to session hijacking and fixation attacks.

Mitigation strategies: Session expiration, randomly generated tokens, and hashed storage.

XSS

XSS is a client-side vulnerability where an attacker injects malicious JavaScript into a website or its backend storage. When the malicious script runs, the attacker can gain unauthorised access to sensitive information and the system.

Mitigation strategies: input sanitisation and validation, strict content security policy to restrict the execution of inline scripts

CSRF

Cross-site request forgery occurs when an attacker forges a request as an authenticated user with valid session tokens. The attacker can forge requests to interact with a malicious website and access sensitive information.

Mitigation strategies: CSRF tokens to verify the session and corresponding user actions

Invalid Forwarding and Redirection

Invalid forwarding and redirecting occur when attackers manipulate URL parameters to redirect users to unintended locations or bypass authentication.

Mitigation strategies: Restrict redirects to a predefined list of trusted URLs, implement user access controls, sanitise any user-controlled input like URLs and parameters

Race Conditions

Race conditions occur when multiple processes access and manipulate shared resources unsynchronised, leading to data corruption or unintended behaviour.

Mitigation strategies: Locking mechanisms (mutexes), atomic operations

Design, develop and implement secure code to protect user file and hardware vulnerabilities from file attacks and side-channel attacks.

File Attacks

File attacks exploit weaknesses in how a program accesses or handles files.

Buffer Overflow: Writing more data into a buffer than it can hold, causing memory corruption, which may lead to arbitrary code execution.

Side-Channel Attacks

Side-channel attacks exploit indirect information leakage, such as timing, electromagnetic emissions, or power consumption, to infer sensitive data.

Power Analysis: Observing power consumption during cryptographic operations to derive keys.

Apply and describe the benefits of collaboration to develop safe and secure software, including considering various points of view (POV), delegating tasks based on expertise and quality of the solution.

Considering various POV

Fostered by their unique specialisation and experiences, each developer on the team brings diverse solutions that reduce the risk of vulnerabilities.

E.g.: A frontend security developer might suggest adding multi-factor authentication for users. An encryption expert advocates for securing sensitive data during transmission. Together, they create a more secure system than either could have designed alone.

Delegating Tasks Based on Expertise

Effective collaboration involves knowing each team member’s strengths and delegating tasks accordingly. By assigning specific security tasks to those most qualified, you ensure that the work is done efficiently and with a higher skill level.

E.g.: A web development team assigns a developer with experience in cryptography to implement data encryption, one familiar with secure authentication to design the login flow.

Quality of Solution

When multiple developers review the same code, they are more likely to catch mistakes or suggest improvements, leading to more resilient software. Collaborative testing ensures that security features are tested adequately from multiple angles, reducing the risk of leaving potential attack vectors open.

E.g.: A team is developing a secure messaging app. After implementing E2E encryption, they collaborate on testing the encryption mechanism. One team member suggests testing for potential timing attacks, while another focuses on testing message integrity in case of data corruption.

Investigate and explain the benefits to an enterprise of implementing safe and secure development practices, including improved products or services, influence on future software development, productivity, and business interactivity.

Improved Products or Services

When security is proactively integrated from the beginning of the development cycle, the product is more resilient and less vulnerable to cyberattacks.

E.g.:

A cloud storage company prioritises secure development by implementing data encryption. As a result, their platform gains clients' trust, attracting more businesses seeking secure data storage solutions.

Influence on Future Software Development

Once an organisation establishes a security-first mindset, over time, this proactive approach results in more efficient, secure development processes when secure development practices are standardised and secure libraries are created for reuse.

E.g:

By developing secure authentication libraries, the company ensures that these components are used consistently across all future projects, improving security and reducing development time.

Productivity

Although integrating security into the development lifecycle may initially take extra time, it saves time and resources in the long run by avoiding costly post-release patches and security audits. Additionally, by incorporating security into software development, companies can focus more on feature innovation.

E.g.:

A SaaS company integrates security testing into its CI pipeline, catching vulnerabilities in the development process. As a result, the team avoided the frequent patches that had previously disrupted their release schedule.

Business Interactivity

Software with more secure data practices meets stringent compliance requirements like GDPR, allowing customers to build trust more easily and have a higher customer retention rate. This leads to stronger, more collaborative relationships and a competitive edge in the marketplace.

E.g:

A healthcare technology company created HIPAA-compliant software, allowing it to secure exclusive partnerships with a big hospital, as its competitors can’t offer the same level of security.

Employment (Social)

Social: New Jobs - Roles like security engineers and ethical hackers have emerged as critical to secure software development.

Ethical: Workforce Displacement –obligated to ensure fair replacement of low-level iT

roles

Legal: Workforce Displacement – fair contract discussion relating low-level IT role termination

Data Security (Ethical)

Social: Individual privacy concerns, such as identity theft, financial fraud, and reputational damage

Ethical: Ethical obligation to protect user data with encryption

Legal: Companies must comply with legal regulations such as GDPR, HIPAA, which enforce strict standards for data handling to ensure privacy and security.

Privacy (Ethical)

Ethical: Developers must implement privacy features, such as data anonymity and encryption, to prevent abuse.

Social: Secure software must prevent unauthorised personal data and give users control over how their information is collected and used.

Legal: Privacy laws that regulate how personal data is handled and store, such as GDPR.

Copyright (Legal)

Social: Impedes the dissemination of ideas

Ethical: Obligation to acknowledge others’ work and avoid plagiarism.

Legal: Developers rely on copyright under the Australian Copyright Act 1968 to safeguard their intellectual property from unauthorised use.

Intellectual Property (IP) (Ethical & Legal)

Social: Impedes the dissemination of ideas

Ethical: Obligation to control ownership of ideas and inventions, avoiding theft

Legal: The legal frameworks for software IP are not always clear-cut, particularly in cases where multiple parties have contributed to the development process.

Digital Disruption (Social)

Enterprises must adapt to new secure technologies or risk falling behind competitors. While secure software helps enterprises protect themselves against cyber threats, it can also disrupt by making certain technologies or business models obsolete.

E.g.:

A financial services company uses blockchain technology to secure transactions, disrupting traditional banking models by offering faster, secure transactions at lower costs. Competitors that fail to implement similar technology struggle to keep up.

Part 3. Where this has been examined (see ../../question_bank.md)

ID Marks Source Topic / type
hsc2025-q5 1 2025 HSC API vulnerabilities (multiple choice)
hsc2025-q8 1 2025 HSC User action controls (multiple choice)
hsc2025-q10 1 2025 HSC Regulatory compliance (multi-select)
hsc2025-q13 2 2025 HSC SAST and DAST (table / drag (SAST v DAST))
hsc2025-q16c 3 2025 HSC Privacy by design (short answer (describe))
hsc2025-q19 3 2025 HSC Developing secure code (Python) (Python)
hsc2025-q20 3 2025 HSC Session management (short answer (describe))
hsc2025-q23a 3 2025 HSC Social and ethical issues (short answer (outline))
hsc2025-q23c 3 2025 HSC Fundamental software design security concepts (table / dropdown)
sample-q3 1 Sample Exam Encryption (multiple choice)
sample-q8 2 Sample Exam SAST and DAST (table (classify SAST/DAST))
sample-q18a 3 Sample Exam Defensive data input handling (short answer (explain, max 75 words))
sample-q18b 3 Sample Exam Developing secure code (Python input validation) (Python (function))
sample-q19 4 Sample Exam Authentication and authorisation (short answer (explain, max 75 words))
sample-q22b 3 Sample Exam Race conditions (short answer (example + outline, max 75 words))
fam-q1 1 Familiarisation Development steps (drag into order)
fam-q6 3 Familiarisation Sandboxing (short answer (discuss))
fam-q9b 3 Familiarisation Developing secure code (Python input validation) (Python (function))
fam-q11a 1 Familiarisation Cross-site scripting (multiple choice)
fam-q11b 2 Familiarisation Cross-site scripting (short answer (explain))
sdd2021-q25 11 Old SDD (old syllabus) Implementation and development approach (extended)
sdd2022-q21 3 Old SDD (old syllabus) Social, ethical and legal responsibilities (short answer / extended)
sdd2023-q23 5 Old SDD (old syllabus) Security and authentication (short answer / extended)