웹 보안 공부하는데 XSS랑 CSRF 이 두 개가 계속 헷갈려요. 이름도 비슷하고 둘 다 뭔가 공격자가 나쁜 짓 하는 거라는 것까진 알겠는데, 정확히 어떻게 다른 공격인지 구분이 안 돼요.
제가 이해한 걸로는 XSS는 게시판 같은 데 스크립트를 심어놓으면 다른 사람이 그 글 볼 때 스크립트가 실행되는 거고요, 예를 들면 댓글에 이런 걸 넣는 거요.
<script>alert(document.cookie)</script>
CSRF는 사용자가 로그인된 상태에서 자기도 모르게 어떤 요청을 보내게 만드는 거라고 얼핏 봤는데, 이 부분이 특히 헷갈려요. 로그인 안 훔쳤는데 어떻게 남의 계정으로 요청이 나가는 건가요?
지금 사이드로 간단한 게시판을 만들고 있어서 실전에서 막고 싶은데요, 방어를 어떻게 하는지도 궁금해요. XSS는 사용자 입력에서 < > 이런 걸 치환해주면 되는 건가 싶은데 맞나요? CSRF는 토큰을 쓴다는 얘기를 들었는데 그 토큰이 어떻게 공격을 막아주는 건지 원리를 모르겠어요.
두 공격의 차이랑 각각 실무에서 뭘 해야 막히는 건지 정리해주시면 정말 감사하겠습니다.