System Security

dragonappear·2023년 4월 15일
0

SURLF

목록 보기
9/9


현재 시스템에서 서버가 추가로 받을 수 있는 정보는 사용자 IP 주소, 클라이언트 정보 밖에 없다.

1. Private url

  • 유저들이 private url로 shortId를 생성하여도, shortId로 privateURL을 유추할 수 없다.
  • 특정 유저에게만 URL 접근을 허용할 수 있게 만든다면, DB에 permission level(public/private)와 허가받은 userId도 함께 저장하는 구조로 진행해도 될 것 같다.
  • 그럴려면 인증된 유저가 필요하기 때문에 user 정보를 담을 수 있는 스키마도 생성해야한다.

2. Invalid url write

  • url validation 조건을 걸어, 무작위 short url write 방지한다.
@Component
public class UrlValidator {

    private static final String URL_REGEX = "(https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)";

    public void validate(String url) {
        if (!url.matches(URL_REGEX)) {
            throw new Custom4xxException(INVALID_URL_FORMAT);
        }
    }

}

3. Syn flooding attack:

  • syn flooding attack을 보호하는 메커니즘을 포함하는 하드웨어 로드 밸런스를 구성한다.
  • 속도 제한, 연결 추적, syn 쿠키와 같은 기능이 포함되어 있다.
  • 들어오는 syn 요청의 속도를 제한하도록 로드 밸런서를 구성한다.
  • 최대 동시 연결 수를 설정하거나 방화벽을 사용하여 과도한 수신 트래픽을 차단한다.

0개의 댓글