URL 매개변수와 같이 사용자가 제공한 데이터는 항상 신뢰할 수 없고 오염된 것으로 간주해야 합니다. 오염된 데이터에서 직접 쿠키를 생성하면 공격자가 세션 식별자를 알려진 값으로 설정할 수 있으므로 공격자는 피해자와 세션을 공유할 수 있습니다. 공격이 성공하면 피해자가 인증할 때 세션 식별자가 재생성되지 않는 등 민감한 정보에 대한 무단 액세스가 발생할 수 있습니다.
일반적으로 이러한 유형의 공격을 방지하는 해결책은 허용 목록으로 영향을 받을 수 있는 쿠키를 제한하는 것입니다.
규칙을 어긴 코드
from django.http import HttpResponse
def index(request):
value = request.GET.get("value")
response = HttpResponse("")
response["Set-Cookie"] = value # 규칙을 어긴 코드
response.set_cookie("sessionid", value) # 규칙을 어긴 코드
return response
규칙을 준수한 해결책
from django.http import HttpResponse
def index(request):
value = request.GET.get("value")
response = HttpResponse("")
response["X-Data"] = value
response.set_cookie("data", value)
return response
같이보면 좋은 자료
- OWASP Top 10 2021 Category A3 - 인션젝
- OWASP Top 10 2017 Category A1 - 인션젝
- MITRE, CWE-20 - 부적절한 입력 유효성 검사
-
MITRE, CWE-384 - 세션 고정
If you like SONARKUBE, don’t forget to give me a star.