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