Skip to main content

6. From Bugs to Breaches: How Small Mistakes Escalate

A tiny bug can cause massive breaches when combined with insecure assumptions.

Example: Mutable Defaults

# 6. Insecure
def add_item(item, store=[]):
store.append(item)
return store

print(add_item("apple"))
print(add_item("banana")) # Unexpectedly modifies previous call!

Secure Version

def add_item(item, store=None):
if store is None:
store = []
store.append(item)
return store

Example: Error Disclosure

# 6. Insecure
try:
1 / 0
except Exception as e:
print("Error:", e) # Reveals stack details

# 6. Secure
try:
1 / 0
except ZeroDivisionError:
print("Cannot divide by zero.")

Lesson: Defensive programming is how you turn bugs into safe failures instead of breaches.