iframe 사용을 지양하는것이 좋다는 말을 듣고 왜? 라는 생각이 들었으며
그 원인을 찾아보는 중 XSS 와 CSRF 키워드가 나왔다.
https://program-developer.tistory.com/99
1. XSS (Cross-Site Scripting)
요약 키워드 : SCRIPT 삽입, Client 공격
요약 : 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점
- 이 취약점은 웹 애플리케이션이 사용자로부터 입력 받은 값을 제대로 검사하지 않고 사용할 경우 나타난다.주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어진다.
- 이 취약점으로 해커가 사용자의 정보(쿠키, 세션 등)를 탈취하거나, 자동으로 비정상적인 기능을 수행하게 하거나 할 수 있다. 주로 다른 웹사이트와 정보를 교환하는 식으로 작동한다.
예) 게시판에 글 작성시 SCRIPT를 삽입하여 작성
대응방안 :
1. script문장에 존재한 특수문자를 메타캐릭터로 변환시킨다.
< ---- <
> ---- >
( ---- (
) ---- )
# ---- #
& ---- &
2. Contents 구문 사용
3. Replace 구문 사용
2. CSRF (XSRF / Cross-Site Request Forgery)
요약 키워드 : 인증 탈취, Server 공격
요약 : 사용자의 인증을 탈취하여 웹사이트에 요청
웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.
- XSS를 이용한 공격이 사용자가 특정 웹사이트를 신용하는 점을 노린 것이라면,
CSRF(사이트간 요청 위조)는 특정 웹사이트가 사용자의 웹 브라우저를 신용하는 상태를 노린 것이다.
- 일단 사용자가 웹사이트에 로그인한 상태에서 사이트간 요청 위조 공격 코드가 삽입된 페이지를 열면,
공격 대상이 되는 웹사이트는 위조된 공격 명령이 믿을 수 있는 사용자로부터 발송된 것으로 판단하게 되어 공격에 노출된다.
대응방안 :
1. CSRF 토큰 사용
2. 사용자와 상호 처리 기능 적용
3. 재인증 요구
쿠키 가로채기 | – 입력값 검사: 웹페이지 입력폼에 사용자 입력 값 검사, 비정상 값은Reject – 쿠키 사용: 쿠키에 중요정보 미포함 |
세션 변조 사용 | – Query String 검사 – 민감 데이터나 값의 트랜잭션 위해 재인증이나 트랜잭션 서명 요청(GET 금지) |
부정클릭 사용 | – 유일한 토큰 사용 |
DRDoS | – DoS 관련 취약점 제거 |
3. SQL INJECTION (sql삽입)
요약 키워드 : sql 삽입, Server 공격
요약 : 입력창 / param 등에 sql를 삽입하여 데이터베이스 조작
프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 방법이다.
대응 방안 :
1. 준비된 선언(Prepared statement)
준비된 선언(Prepared statement)을 사용하면 사용자의 입력이 쿼리문(SQL 선언 템플릿)으로부터 분리되기 때문에 SQL 삽입을 효과적으로 방어할 수 있다. 준비된 선언은 다음과 같은 단계에 따라 실행된다:
- 준비: 쿼리문이 데이터베이스 관리 시스템(DBMS)으로 전송된다. 이 때 사용자 입력 값은 전송되지 않는 대신 플레이스홀더로 표시된다.
- DBMS가 쿼리문을 분석하고 최적화를 진행한다.
- 실행: 플레이스홀더에 입력할 사용자 입력 값이 전송되고 DBMS가 쿼리문을 실행한다.
2. 이스케이프
SQL에서 특별한 의미를 갖는 문자들을 이스케이프해서 SQL 삽입을 방어할 수도 있다.
예약문자 | 내용 | 참고 |
\n | 줄바꿈 | 개행문자(캐리지 리턴) |
\ | 시퀸스 문자 시작 | \" |
\t | 현재시간 | |
\u | 사용자 이름 | |
\033--- | 컬러 색상 관련 | \033[0;31m 텍스트 빨간색 |
\w | 현재 작업중인 로컬 디렉토리 전체경로명 | /home |
\[ | 비출력문자열 시작 | |
\] | 비출력문자열 종료 |
4. 코드 인젝션 (Code Injection)
코드 인젝션(영어: Code injection)은 유효하지 않은 데이터를 실행함으로써 야기되는 소프트웨어 버그의 부당한 사용이다. 삽입은 공격자에 의해서 취약한 컴퓨터 프로그램 코드를 삽입하고 실행을 변경하는 방식으로 이용된다. 성공적인 코드 인젝션은 이것을 이용한 웜의 전파 같이 종종 처참한 결과를 보여준다.
https://ko.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%EC%9D%B8%EC%A0%9D%EC%85%98
'Web' 카테고리의 다른 글
[javascript] 동일한 이름의 사진을 업로드하였을 때 새 이미지로 새로 고침이 안되는 경우 (0) | 2022.09.20 |
---|---|
크롬 CORS 에러 해결방법 (0) | 2021.09.17 |
[Web Server] NGINX, Flask, uwsgi 연동 (0) | 2021.08.19 |
[Web] 웹 개발자 초보가 보면 유용한 글 (0) | 2021.07.19 |
[WEB] 웹 스트레스 테스트 (APM) (0) | 2021.06.29 |