1) XSS (Cross-Site Scripting)
2) CSRF (Cross-Site Request Forgery)
3) SQL Injection
4) 클릭재킹 (Clickjacking)
1) SECRET_KEY 설정
SECRET_KEY = 'your_secret_key_here'
2) DEBUG 비활성화
DEBUG = False
3) ALLOWED_HOSTS 설정
ALLOWED_HOSTS = ['your_domain.com', 'your_server_ip']
4) django.middleware.security.SecurityMiddleware 활성화
MIDDLEWARE = [
# ...
'django.middleware.security.SecurityMiddleware',
# ...
]
5) CSRF 보호
Django는 기본적으로 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위한 보호를 제공
{% csrf_token %} 템플릿 태그를 사용하고, AJAX 요청에 대한 CSRF 토큰을 설정
📌 CSRF (Cross-Site Request Forgery) 공격
: 악의적인 웹 사이트나 이메일을 통해 사용자가 의도하지 않게 웹 애플리케이션에서 특정 작업을 수행하도록 유도하는 공격
📌 AJAX (Asynchronous JavaScript and XML) 요청
: 비동기적으로 서버와 통신하여 웹페이지를 업데이트하거나 데이터를 가져오는 기술
웹 페이지 새로고침 없이도 사용자와 상호작용하여 동적으로 데이터를 로드한다. js를 통해 처리되며, 네트워크 요청을 보내고 서버로부터의 응답을 처리하는 역할
6) 적절한 인증 및 권한 설정
사용자 인증 및 권한 관리에 대한 Django의 내장 기능을 활용.
django.contrib.auth 앱을 사용하여 사용자 인증 및 권한을 설정.
settings.py의 installed_apps에 사용
INSTALLED_APPS = [
...
'django.contrib.auth',
...
]
7) 중요 데이터 보호
데이터베이스 암호화하여 데이터를 보호. Django에서는 django-encrypted-fields와 같은 서드파티 라이브러리를 사용하여 필드 수준의 암호화를 구현.
8) 외부 입력 검증
사용자 입력 및 데이터베이스 쿼리와 같은 외부 입력을 검증하고 처리할 때 Django의 내장 폼 및 ORM을 사용하여 쿼리 주입 및 다른 보안 취약성을 방지하세요.
📌 ORM (Object-Relational Mapping)
: 객체 지향 프로그래밍과 관계형 데이터베이스 간의 데이터 변환 및 상호 작용을 관리하는 프로그래밍 패턴 또는 기술
9) 안전한 쿠키 이용
SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
- 세션쿠키는 HTTPS 연결을 통해서만 전송됨
CSRF_COOKIE_SECURE = True
- CSRF 토큰 쿠키에 대한 설정