186. Security Best Practices
Snippet 1: Input Validation with Regular Expressions
import re
# Validate email input
def is_valid_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return bool(re.match(pattern, email))
# Test email validation
email = "test@example.com"
print("Valid Email" if is_valid_email(email) else "Invalid Email")Snippet 2: Preventing SQL Injection with Parameterized Queries
import sqlite3
# Use parameterized queries to prevent SQL injection
conn = sqlite3.connect('secure.db')
cursor = conn.cursor()
# Create a table
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT, password TEXT)')
conn.commit()
# Insert data securely
username = "admin'; DROP TABLE users;--"
password = "securepassword"
cursor.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password))
conn.commit()
# Verify insertion
cursor.execute('SELECT * FROM users')
print(cursor.fetchall())
conn.close()Snippet 3: Hashing Passwords with bcrypt
Snippet 4: Secure Random Number Generation
Snippet 5: Sanitizing HTML Input with Bleach
Snippet 6: Limiting Password Attempts
Snippet 7: Using HTTPS with Flask
Snippet 8: Validating JSON Input with Marshmallow
Snippet 9: Setting Secure Cookies in Flask
Snippet 10: Rate Limiting with Flask-Limiter
Last updated