Chapter01/Sping boot

[ 보안 취약점 조치 ] Clickjacking 공격

EmmaDev_v 2025. 6. 26. 16:06

보안 취약점 결과가 나왔는데

클릭재킹 공격 항목에 걸렸다

 

 

 

Clickjacking 공격?? ???


사용자가 웹사이트 화면을 보고 있다고 착각하게 만든 뒤,
사실은 투명한 iframe 같은 곳에서 악성 페이지 클릭하게 유도하는 공격.

 

(예를 들어

외부 사이트가 우리 사이트 화면을 iframe에 몰래 띄우고,

투명 버튼을 올려놔서 사용자가 본인도 모르게 그 투명 버튼을 클릭하게 유도함)

 


 

취약점 설명 

이용자가 자신이 클릭하고 있다고 인지하는 것과 다르게 공격자가 의도하는 것을 
이용자가 감춰진 링크를 클릭하게 속이는 악의적인 공격 방법이다. 잠재적으로 공
격자는 비밀 정보를 유출하거나 그들의 컴퓨터에 대한 제어를 획득할 수 있다. 

 

양호기준

외부 객체를 통해 해당 사이트가 참조되지 않는 경우

 

취약기준

외부 객체를 통해 해당 사이트가 참조되는 경우

 

 

점검 결과

X-Frame-Options가 설정되어 있지 않아, 타 사이트에서 IFrame 태
그를 이용하여 해당 웹 사이트를 호출 가능하였다.

 

대응방안

웹 서버에 X-Frame-Options 헤더를 이용하여 객체 참조 태그를 렌더링할 수 없게 
설정한다. 주의사항으로 헤더의 설정 위치가 잘못된 경우, 옵션이 정상적으로 적용
되지 않는다.

 

옵션 설명
Deny 모든 페이지와 도메인에서 표시를 거부
Sameorigin 동일 페이지와 도메인에서 Iframe 호출 가능
All from <URI> 지정된 페이지와 도메인에서 Ifame 호출 가능

 

 

 

 

 

poswershell 에서 curl 명령어를 날려보면 아래와같이 연결됨

 

 

 

 

 

 

 

 

대응 방안으로  받은

X-Frame-Options 헤더의 각각 역할은

DENY 어떤 사이트도 iframe으로 이 페이지를 띄울 수 없음
SAMEORIGIN 같은 도메인만 iframe에서 띄울 수 있음 (보통 이걸 많이 씀)
ALLOW-FROM 특정 URL만 허용 (거의 사용 안 함, 최신 브라우저 비지원)

 

그래서 
Spring security에 httpResp.setHeader("X-Frame-Options", "SAMEORIGIN") 를 추가하기로함.

 

=> "외부 사이트에서 우리 페이지를 iframe으로 몰래 띄워 Clickjacking 공격당하는 걸 막기 위함"

 

 

 

 

 

WebSecurityConfiguration 파일에

 

.headers(headers -> headers
    .cacheControl(cache -> cache.disable())
    .frameOptions(frame -> frame.sameOrigin())
)

를 추가해서

HTTP 응답 헤더에 같은 출처에서의 iframe 호출만 허용하는 설정을 넣어줌.

 

 

설정한 후에 curl 똑같이 날려보면

 

 

 

 

 

 

 

 

반응형