feat: harden phase 3 api security
This commit is contained in:
@@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/
|
||||
"""
|
||||
|
||||
import os
|
||||
from decimal import Decimal
|
||||
from pathlib import Path
|
||||
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
@@ -50,6 +51,13 @@ def env_int(name: str, default: int) -> int:
|
||||
return int(value)
|
||||
|
||||
|
||||
def env_decimal(name: str, default: str) -> Decimal:
|
||||
value = os.environ.get(name)
|
||||
if not value:
|
||||
value = default
|
||||
return Decimal(value)
|
||||
|
||||
|
||||
load_dotenv(BASE_DIR / ".env")
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret.
|
||||
@@ -82,6 +90,14 @@ ALIPAY_DEBUG = env_bool("ALIPAY_DEBUG", False)
|
||||
|
||||
ALLOWED_HOSTS = env_list("DJANGO_ALLOWED_HOSTS", "127.0.0.1,localhost,testserver")
|
||||
|
||||
API_GENERATE_THROTTLE_RATE = os.environ.get("API_GENERATE_THROTTLE_RATE", "60/min")
|
||||
API_AUTH_FAILURE_THROTTLE_RATE = os.environ.get("API_AUTH_FAILURE_THROTTLE_RATE", "30/min")
|
||||
IMAGE_URL_MAX_BYTES = env_int("IMAGE_URL_MAX_BYTES", 10 * 1024 * 1024)
|
||||
IMAGE_URL_MAX_REDIRECTS = env_int("IMAGE_URL_MAX_REDIRECTS", 3)
|
||||
IMAGE_URL_CONNECT_TIMEOUT_SECONDS = env_int("IMAGE_URL_CONNECT_TIMEOUT_SECONDS", 10)
|
||||
IMAGE_URL_READ_TIMEOUT_SECONDS = env_int("IMAGE_URL_READ_TIMEOUT_SECONDS", 60)
|
||||
RECHARGE_MAX_AMOUNT_CNY = env_decimal("RECHARGE_MAX_AMOUNT_CNY", "100000.00")
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
@@ -100,6 +116,18 @@ INSTALLED_APPS = [
|
||||
'apps.api',
|
||||
]
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
"DEFAULT_AUTHENTICATION_CLASSES": [],
|
||||
"DEFAULT_PERMISSION_CLASSES": [
|
||||
"rest_framework.permissions.IsAuthenticated",
|
||||
],
|
||||
"DEFAULT_THROTTLE_RATES": {
|
||||
"generate": API_GENERATE_THROTTLE_RATE,
|
||||
"api_auth_failure": API_AUTH_FAILURE_THROTTLE_RATE,
|
||||
},
|
||||
"EXCEPTION_HANDLER": "apps.api.exceptions.api_exception_handler",
|
||||
}
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
|
||||
Reference in New Issue
Block a user