웹 보안: XSS,CSRF,SQL Injection

lynn·2022년 6월 21일
0

TIL

목록 보기
3/7

웹에디터로 입력하면 html 태그가 그대로 출력됨→dangerouslySetInnerHTML으로 태그를 인식할 수 있어서 브라우저에는 태그가 보이지 않는다.

하지만 이는 XSS 공격에 취약하다.

XSS : Cross Site Scripting

다른 사이트의 취약점을 노려서 스크립트와 html으로 코드를 심고, 사용자가 내용을 넣으면 그 코드가 실행되도록 하는 것 (예: 웹에디터 내용에 스크립트를 넣어서 토큰을 다른 곳에 저장하도록 함)

방지: 쿠키에 httpOnly 옵션을 줘서 저장, 로컬이나 세션스토리지에는 저장 안하도록 하기

```jsx
<img src='#' onerror='console.log(localStorage.getItem(\"accessToken\"))' />
```

보완을 위해서는 라이브러리를 가져다 사용하는 것이 좋고 라이브러리 중에서도 이미 많은 검증을 거친 전문 업체 솔루션을 사용하는 게 좋다.

CSRF : Cross Site Request Forgery (위조 요청)

인터넷 사용자가 자신의 의지와 무관하게 공격자가 의도한 행위를 웹사이트에 요청하게 되는 공격 방식
이때 행위는 글을 임의로 등록하거나 수정,삭제 등을 예로 들 수 있다.

공격이 이뤄지기 위한 조건: 위조 요청 대상인 웹사이트에 사용자가 로그인한 상태 && 사용자는 해커가 만든 피싱 사이트에 접속

대응법
가짜 사용자를 판별하기 위해 api 요청시 토큰을 사용한다.
토큰을 재사용할 수 없도록 유효시간을 설정하거나 로그아웃 시 세션을 만료시키는 것도 방법

SQL Injection (데이터베이스 쿼리와 관련)

기존 쿼리: email 일치 && password 일치
인풋에 sql문을 넣어서 공격(ex: 비밀번호에 1 or ‘1’=1 삽입)

profile
개발 공부한 걸 올립니다

0개의 댓글