때는 바야흐로 저저번주쯤 보안감사...
얘기를 나누다가.. 운영중인 사이트의 IP접근제한은 어떤 방식으로 하냐고 물어왔습니다.
저는 서버단 코드에서 remoteAddress 를 받아서 미리 입력해둔 IP셋에 해당하지 않으면
접근 차단 페이지로 강제이동시킨다고 답했구요.
얘기를 듣더니... 고개를 갸우뚱 하며
"어....그렇게 하시면 외부에서 IP셋을 보고 우회할수도 있을텐데요?"
라고 해와서 저는
'아...이양반이 날 몰로보고... 내가 프론트단에다 그걸 넣어놨겠니'
라고 생각후
"ㅎㅎ 그거는 자바스크립트단이구요, 저는 그 안쪽에 서버의 자바코드로 해놓은거라 괜찮습니다"
영 못미더운지 이따가 좀 실제 코드를 보자고 하더군요.
알았다 하고 진행했습니다.
그리고 실제 코드를 보여줬는데.......
String visitor = request.getRemoteAddr();
boolean deny = false;
List<String> allowList = new ArrayList<>();
allowList.add("허용아이피1");
allowList.add("허용아이피2");
for(int i = 0 ; i < allowList.size() ; i++) {
if(visitor.equals(allowList.get(i))) {
deny = true;
}
}
// 접속자 아이피 불일치시 접속 차단 페이지로 리다이렉트
if(!deny) {
response.sendRedirect("/deny");
return false;
}
"음...이렇게 해놓으셔도요, 결국은 외부에서 다 긁어갈수 있거든요.
다 방법이 있어요"
...............????!!????
ㄹㅇ???
아니 저라고 뭐 빠삭하게 다 알고 있는건 아니지만,
상식적으로, 서버단 코드를 (손쉽게)유출시킬수 있으면
지금 존재하는 웹사이트들 존속이 가능하기나 합니까?
.........
제가 허접인지, 저양반이 허접인지좀 알고싶습니다.
........
.....
외전.
제목: 404가 뜬다는건 결국 보인다는 거거든요...
이것은 외전입니다.
위 코드에서 아이피가 일치하지 않으면 deny 라는 페이지로 리다이렉트 돌아가는 상황을
핸드폰으로 보여줬었는데요.
자기가 좀 만지더니 이럽니다.
"자 보세요, 404 에러가 뜨죠? 이거는 이미 서버에 붙었다는 거거든요.
비록 페이지는 뜨지 않지만 아무튼 서버에 붙었다는 겁니다. 문제가 있으니 시정하셔야 할듯 하네요"
뭘 했는고 하니, 주소창에 /deny 대신 아무 문자나 넣어서
말 그대로 찾는 경로없음 (404) 에러를 띄운거더라구요.
뭐... 404 에러가 서버는 요청을 성공적으로 받았지만 해당하는 페이지가 없음.
이라는 의미도 맞고 따라서 서버에 붙긴 했다는 말도 맞으며
404 에러페이지를 쌩으로 보여주는건 바람직하지 못하다는건 저도 인정하는데...
음...글쎄요. 어차피 무슨 수를 써도 인터셉터에 의해 경로를 가로채여서
deny 페이지로 리다이렉트 당할텐데?
물론 404 에러를 쌩으로 보여주는건 수정은 해야겠습니다만 과연 인터셉터를 뚫고 로그인이나 메인페이지에 접근할수 있는 방법이 있는지는 모르겠습니다.
뭐 어나니머스정도면 가능은 할거같은데 그양반들이 할거없다고 제 사이트나 털러 오진 않을거 같고..