호그와트

XSS와 CSRF의 차이점 (드림핵에서 누가 물어보길래)

영웅*^%&$ 2022. 1. 3. 00:04
728x90

XSS랑 CSRF랑 많이 비슷하긴 하죠

저도 처음 볼 때 "그게 그거 아냐?"

이런 생각을 했었던 기억이 납니다

(XSS나 CSRF나 이름을 잘 보시면 '크로스 사이트'가 똑같이 들어갑니다

그리고 둘 다 피싱을 사용하는 경우가 있습니다 -XSS는 종류에 따라 다름

그렇기 때문에 헷갈리는 건 어느정도는 당연하다고 할 수 있습니다)

리플렉티드 크로스 사이트 스크립팅 취약점과 CSRF 취약점이 워낙 개념적으로 근접해서 혼동되긴 하지만, 둘의 직접적인 차이는 피싱 이후 진행되는 과정에 있다고 할 수 있습니다

(공통점이나 본질적인 내용은 이미 아실 거라고 전제하고 위의 문장을 쓴 거에요)

조금 더 예를 들어서 설명해볼게요

php 코드에

$message = htmlspecialchars( $message );

이런 식으로 쓰게 되면

htmlspecialchars() 함수를 통해 특수 문자들이 HTML 엔티티로 변환되고 <script> 태그 같은 것들이 무효화 처리 됩니다

따라서 이런 식으로 구성하게 되면 스토어드 크로스 사이트 스크립팅은 매우 어렵게 되지만

다른 방향에서 CSRF 공격은 유효할 수 있습니다

역으로 이러한 경우도 있을 수 있습니다

내부 이메일을 차단해서 피싱이 불가능하게 만들었지만

(여기서는 이메일을 통해서 피싱이 이루어지는 CSRF를 예시로 들었지만

여러 방법이 있을 수 있다고 생각해요 - 그래도 이메일이 워낙 대표적인 방식이죠

보안에 100%라는 건 없기 때문에 CSRF가 불가능하다라는 말도 여러가지로 해석 될 수 있겠네요)

웹페이지 내부 입력값 검증은 약해서 간단하게 Stored XSS 등이 통하는 경우 말이죠

이외에도 하나하나 구체적으로 얘기하면 더 많은 경우의 수와 공격 벡터가 나오지만 기본적인 내용에 충실히 써보면 대략 이 정도 얘기할 수 있을 거 같아요

(드림핵에도 올라와 있긴 하지만, 본인이 쓴 거 맞다)

728x90

'호그와트' 카테고리의 다른 글

드림핵 web-deserialize python  (0) 2022.01.18
드림핵 linux forest  (0) 2022.01.18
웹해킹 58번 문제  (0) 2021.12.25
웹해킹 42번 문제  (0) 2021.12.25
웹해킹 41번 문제  (0) 2021.12.25