FINAL Secure Software Engineering Exam Prep

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/49

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

50 Terms

1
New cards

Refactoring

Change code structure without changing behavior.

2
New cards

Why Refactor

Improves readability, maintainability, design quality.

3
New cards

Examples of Refactoring

Extract Method, Rename Method, Replace Temp with Query, Decompose Conditional.

4
New cards

Code Rot

Degrades quality over time; refactoring helps prevent this.

5
New cards

Corrective Maintenance

Fixes bugs in existing software.

6
New cards

Adaptive Maintenance

Modifies software to fit a changing environment.

7
New cards

Perfective Maintenance

Adds or improves features in software.

8
New cards

Preventive Maintenance

Makes software easier to maintain and prevents future issues.

9
New cards

Maintenance Cost

Maintenance often costs 2–100× more than initial development.

10
New cards

Validation

Are we building the right product? (user needs)

11
New cards

Verification

Are we building the product right? (specifications)

12
New cards

Black Box Testing

Test based on input/output only.

13
New cards

White Box Testing

Test based on code’s internal logic/structure.

14
New cards

Regression Testing

Check that existing functionality still works after changes.

15
New cards

TDD (Test-Driven Development)

Write tests before writing the code.

16
New cards

CIA Triad

Confidentiality, Integrity, Availability.

17
New cards

Confidentiality

Prevent unauthorized access to data.

18
New cards

Integrity

Ensure data is accurate and unmodified.

19
New cards

Availability

System and data are accessible when needed.

20
New cards

Defense in Depth

Use multiple layers of security.

21
New cards

Least Privilege

Users get only the access they need.

22
New cards

Fail Securely

System remains secure even during failures.

23
New cards

Complete Mediation

Validate every access request thoroughly.

24
New cards

Separation of Privilege

Use more than one condition to allow access.

25
New cards

XSS (Cross-Site Scripting)

Inject malicious JavaScript into trusted websites.

26
New cards

Defense Against XSS

Filter input, encode output, use CSP (Content Security Policy).

27
New cards

CSRF (Cross-Site Request Forgery)

Trick user into submitting unauthorized actions.

28
New cards

Defense Against CSRF

Use SameSite cookies and secret tokens.

29
New cards

SQL Injection

Inserting malicious SQL via user input.

30
New cards

Defense Against SQL Injection

Use prepared statements and sanitize input.

31
New cards

Buffer Overflow

Writing data beyond memory limits.

32
New cards

Defense Against Buffer Overflow

Use safe functions like fgets() and snprintf().

33
New cards

Modularity

Divide code into independent parts.

34
New cards

Cohesion

Group related functionality together within modules.

35
New cards

Coupling

Minimize dependencies between different parts of the system.

36
New cards

Open-Closed Principle

Software should be open for extension, closed for modification.

37
New cards

Liskov Substitution Principle

Subclasses should preserve behavior of base classes.

38
New cards

Dependency Inversion Principle

Depend on abstractions, not concrete implementations.

39
New cards

Interface Segregation Principle

Use many specific interfaces instead of one general-purpose one.

40
New cards

Facade Pattern

Provides a simplified interface to a complex system.

41
New cards

Adapter Pattern

Allows incompatible systems to work together.

42
New cards

Observer Pattern

Notifies other components when one component changes.

43
New cards

XSS vs SQL Injection

XSS is script injection; SQLi is query manipulation.

44
New cards

Validation vs Verification

Validation = user needs; Verification = specifications.

45
New cards

TDD Meaning(Test Driven Development)

Test first, write code second.

46
New cards

Adaptive vs Corrective Maintenance

Adaptive = environment change; Corrective = bug fixing.

47
New cards

Regression Testing Purpose

Check that nothing is broken after updates.

48
New cards

CSP (Content Security Policy)

Prevents execution of unauthorized scripts, such as inline JS.

49
New cards

Buffer Overflow Language Risk

Common in C/C++ due to manual memory management.

50
New cards

Observer Pattern Meaning

Publish-subscribe mechanism for automatic updates.