Software Secure Engineering Final Exam

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

1/43

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.

44 Terms

1
New cards

Refactoring

Improving code’s internal structure without changing its external behavior.

2
New cards

Why Refactor

Improve design, make code easier to understand, help find bugs.

3
New cards

Common Refactoring Techniques

Extract Method, Rename Method, Replace Temp with Query, Introduce Explaining Variable, etc.

4
New cards

Obstacles to Refactoring

Complexity, risk of new errors, cultural resistance, performance concerns.

5
New cards

Software Maintenance

Modification of software after delivery to correct faults or improve performance.

6
New cards

Types of Maintenance

Corrective, Adaptive, Perfective, Preventive.

7
New cards

Software Maintenance Cost

Maintenance often costs more than original development.

8
New cards

Program Comprehension

Understanding code before making modifications.

9
New cards

Reengineering

Restructuring software to improve maintainability without changing functionality.

10
New cards

Reverse Engineering

Analyzing software to create representations at higher levels of abstraction.

11
New cards

Software Change

Inevitable due to new requirements, errors, business changes.

12
New cards

Change Implementation

Understand current system → design → implement → test.

13
New cards

Urgent Changes

Handled quickly without full process; risky but necessary.

14
New cards

Validation Testing

Ensures software meets user needs.

15
New cards

Verification Testing

Ensures software is built correctly per specifications.

16
New cards

Regression Testing

Re-running tests to confirm no new bugs after changes.

17
New cards

Black Box Testing

Testing based on functionality without looking at internal code.

18
New cards

White Box Testing

Testing with knowledge of the internal code structure.

19
New cards

Test-Driven Development (TDD)

Write tests before writing code.

20
New cards

Cross-Site Scripting (XSS)

Injecting malicious scripts into trusted websites.

21
New cards

Defense Against XSS

Input filtering, output encoding, Content Security Policy (CSP).

22
New cards

Cross-Site Request Forgery (CSRF)

Tricking users into submitting malicious requests.

23
New cards

Defense Against CSRF

SameSite cookies, secret tokens.

24
New cards

Buffer Overflow

Overwriting memory by exceeding a buffer’s capacity.

25
New cards

Defense Against Buffer Overflow

Use safe functions like fgets(), strncpy(), snprintf().

26
New cards

SQL Injection

Inserting malicious SQL through input fields.

27
New cards

Defense Against SQL Injection

Input filtering, encoding, prepared statements.

28
New cards

Goals of Secure Software

Confidentiality, Integrity, Availability (CIA).

29
New cards

Defense in Depth

Multiple layers of security for better protection.

30
New cards

Least Privilege

Grant users only the permissions they need.

31
New cards

Fail Securely

Systems should remain secure even when they fail.

32
New cards

Complete Mediation

Check every access attempt for authority.

33
New cards

Separation of Privilege

Require multiple conditions for sensitive actions.

34
New cards

Modularity

Separating unrelated concerns into independent modules.

35
New cards

Coupling

The degree of dependency between modules; should be low.

36
New cards

Cohesion

How closely related the functions within a module are; should be high.

37
New cards

Open-Closed Principle

Modules should be open for extension but closed for modification.

38
New cards

Liskov Substitution Principle

Subclasses should be usable through base class references without altering correctness.

39
New cards

Dependency Inversion Principle

Depend on abstractions, not concretions.

40
New cards

Interface Segregation Principle

Use several specific interfaces rather than a large general-purpose one.

41
New cards

Facade Design Pattern

Provides a simple interface to a complex subsystem.

42
New cards

Adapter Design Pattern

Makes incompatible interfaces compatible.

43
New cards

Observer Design Pattern

Notifies multiple objects when one object changes state.

44
New cards