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.