드코
1k
2019-03-14 20:58:37
2
137

A서버에서 B서버로 id값 전송 하는법


기존에 

A서버에서 로그인 후 id값 쿠키생성 그다음 버튼을 누르면

location.href="B서버url"; 해서 링크를 타고 B서버가 열린 후 

존재하는 쿠키값중 id값을 가져와서 B서버 로그인 


이런 시스템이였는데 이번에 쿠키값을 변조하여 B서버에 다른사용자로 로그인 할 수있는 취약성이 발견되었습니다.


그래서 A서버에서 B서버로 id값을 안전하게 전송할 방법을 찾고 싶습니다.

일단 A서버의 도메인은 https://www.test1.com 이고

B서버의 도메인은 http://www.test2.com 입니다,

그리고  B서버는 타사 솔루션이라 백단 수정이 거의 불가하고 jsp안에 서버사이드 스크립트까지만 컨트롤이 가능합니다.


처음엔 세션으로 해볼까도 하였지만 서로 다른서버여서 세션공유를 하기위해선 별도의 작업이 필요하다고해서 좀 어려운거같아 그거는 제일 마지막으로 염두해두고 있습니다.

그전에 A서버에서 B서버로 id값을 전송할 방법을 찾고 싶습니다. 

A서버는 spring+jsp 이고  B서버는 타사솔루션+jsp 입니다.


0
0
  • 답변 2

  • 콘푸로스트
    195
    2019-03-14 21:44:12 작성 2019-03-14 21:46:57 수정됨

    상황이 참 안좋네요;;

    저도 비슷한 상황이 있었습니다.

    이 방법이 도움이 되길 바랍니다.


    A서버에서 아이디를 암호화를 하고 B서버에서 아이디를 복호화합니다.

    'JAVA AES' <라고 검색하시면 예제가 많습니다.

    암호화하고, 복호화하는 암호키 16자리가 A서버와 B서버에 동일해야합니다.

    암호화키가 노출되면 암호화한 데이터를 누구나 복호화할 수 있으니 주의해야합니다.



    1. A서버에서 아이디를 암호화시켜줍니다.

    - 암호화할 때는 서버사이드(JAVA)에서 암호화해주세요.


    2. B서버에서 받은 아이디를 복호화시켜줍니다.

    - 복호화할 때는 JSP영역에서 JAVA코드로 복호화하세요.

    - JSP에서 JAVA사용이 가능하고, 쿠키 접근이 가능합니다. (저는 모두 JAVA에서 했지만, JSP에서도 어려움없이 AES기능을 사용가능할꺼라 예상됩니다.)

    - JAVASCRIPT영역에서 복호화를 한다면 암호키가 노출되기 때문에 무용지물입니다.



    이 방법 역시 다른 누군가의 암호화된 아이디값을 안다면 로그인이 가능합니다.



    암호키를 만들 때 임의의 값 16자리를 넣는데, 이 때 현재 날짜를 섞어줍니다.

    암호키 = 현재날짜 8자리'20190301' + 문자열 8자리'AAAAAAAA'

    이렇게하면 같은 아이디라도 매일매일 암호화키가 변경되기 때문에 암호화된 아이디값이 노출되더라도 다음날이 되면 달라지기 때문에 로그인할 수 없습니다.

    단점은 만약 사용자가 03-01 23:59에 A에서 접속하고, 03-02 00:00 B서버에서 접속하면 로그인 오류가 발생할껍니다. 그리고 노출된 그날은 해킹이 가능합니다.


    다른 방법은 접속한 사용자의 IP를 가져오는 방법입니다.

    아이피의 자리수는 사용자마다 다릅니다.

    111.222.111.222  -> 12자리

    1.2.3.4 -> 4자리

    암호키는 꼭 16자리를 맞춰줘야합니다.

    암호키 = IP '111222111222' + 문자열 4자리'AAAA'

    암호키 = IP '1234' + 문자열12자리 'AAAAAAAAAAAAAAAA'

    이렇게 암호키를 만들면 A서버와 B서버에서 접속한 사용자의 ID와 IP가 일치해야 접속이 됩니다.

    다만, 해당 아이피에서는 암호화된 아이디값은 고정적이죠.


    이 두 방법을 섞어도 좋습니다.

    현재날짜의 일부분과 아이피의 일부분 그리고 임의의 값 'AAAA'를 적절히 섞는 거죠.

    암호화 데이터는 매일매일 달라지고, 접속한 아이피에 따라 달라지니 함부로 로그인하기 쉽지 않습니다.

    2
  • 얻으민
    741
    2019-03-14 22:46:16
    A서버에서 생성하는 ID 쿠키의 값이 어떤 형태인가요?
    hash 값 인가요
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.