#CSRF(사이트간 요청 위조)
악성코드 서버에서 발생

공격과정 
...

http://auction.com/changeUserAcoount?id=admin&password=admin" width="0" height="0">
...
위 옥션 사건을 예로 들어보자.

옥션 관리자 중 한명이 관리 권한을 가지고 회사내에서 작업을 하던 중 메일을 조회한다. (로그인이 이미 되어있다고 가정하면 관리자로서의 유효한 쿠키를 갖고있음)
해커는 위와 같이 태그가 들어간 코드가 담긴 이메일을 보낸다. 관리자는 이미지 크기가 0이므로 전혀 알지 못한다.
피해자가 이메일을 열어볼 때, 이미지 파일을 받아오기 위해 URL이 열린다.
해커가 원하는 대로 관리자의 계정이 id와 pw 모두 admin인 계정으로 변경된다.

위 공격과정 출처 : https://sj602.github.io/2018/07/14/what-is-CSRF/

해결방법 
1. referrer 검증 - 같은 도메인 상에서 요청이 들어오지 않으면 차단
2.csrf 토큰 - 랜덤한 수를 사용자의 세션에 저장하여 사용자의 모든 요청에 대하여 서버단에서 검증하는 방법
3. captcha 이용하여 cahtcha 이미지상의 숫자/문자가 아니면 해당 요청을 거부

#XSS 
악성코드 클라이언트에서 발생
사용자를 대상으로 한 공격이다.

ex) input에  를 넣어 보냄 
해결방법 
입력 값 제한
입력 값 치환
필터 사용 등

 


# 파일 첨부 기능 (파일 업로드)

* form http 폼 전송의 인코딩 타입을 멀티파트/폼 데이터(multipart/form-data)로 바꾸어야 한다. 이 속성을 추가하지 않으면 파일은 전송 되지않고, 파일 이름만 전송된다.

첨부파일 저장 파일 만들 경우, 권한 잘 적용하여야 하고 git에 올라가는걸 방지 하자.

사용자 업로드 후 form 전송 -> 유효성 체크(원하는 형식인지 (MIMES:jpg,zip....) -> 같은 이름의 파일을 여러번 올릴 수 있기 때문에 구분값 (스트링랜덤값?..)등 필요 
   


# 쿼리 캐싱

사용자가 어떤기능을 사용할떄 가장 느린 부분은 데이터베이스를 사용하는 부분이다. 이처럼 비용이 높은 곳을 더싼 저장소로 대체하는 행위를 캐싱이라고 한다.
캐시 저장소는 보통 키-값으로 구성된다. 파일일 수도 있고, 메모리일 수도있다. 데이터베이스 접근을 요하는 컨트롤러 메서드에 사용자 요청이 도달하면, 컨트롤러는 요청 정보를 
이용해서 캐시 키를 만든다. 캐시 키로 저장소를 조회해서 찾으면 그 값을 사용한다. 이것을 캐시 힛이라고한다.
캐시 키를 찾지 못하면, 그 결과를 데이터베이스에 저장한다. 이 작업을 캐시 미스, 캐시 필 이라고 한다. 

하지만 메모리 캐시를 저장소를 사용하면 파일 시스템에 접근하는 오버헤드까지도 줄일 수 있다 이를 위한 데이터베이스는 멤캐시,레디스 등이 있다.




   

+ Recent posts