포럼
트래픽 초과 문제가 발생하고 있습니다.
2014.11.27 15:39
오랜만입니다.
몇일전부터 제가 운영하는 사이트에 트래픽 초과로 인해 사이트 접근이 차단되는 일이 빈번히 발생했습니다.
딱히 그럴만한 내용도 이유도 별로 없는데 말입니다.
처음에는 어쩌다 한번이려니 하고 넘어갔는데 다음날도 그 다음날도 반복하고 있어서...
방문자를 확인해 보았지만 방문자는 차이가 별로 없었습니다.
그러나 페이지 뷰에서 두배넘개 증가된것을 알게되었습니다.
그래서 그 이유가 무엇때문인지 호스팅사에 요청해서 서버 로그를 분석해 보았습니다.
특정 페이지가 반복해서 로드되는것을 확인할 수 있었습니다.
그런데...
그 페이지가 서버상에 존재하지 않는 경로에 위치한 파일인것에 깜짝 놀랐습니다.
예를 들어서 "http://XE 설치 경로/widgets/test/content.html" 이란 경로에 파일이 있다고 했을때
브라우저에서 소스 보기하면 해당 파일의 XE 문법 그대로 출력됩니다.
(이 부분은 예전에도 한두번 거론되었던 내용인것 같은데요...)
그런데 "http://XE 설치 경로/아무런이름/widgets/test/content.html" 와 같이 중간에 아무런이름 을 넣어도
"http://XE 설치 경로/widgets/test/content.html" 와 똑같은 페이지가 열립니다.
더 웃긴건 저는 지금까지 한번도 '아무런이름'의 경로를 한번도 사용한 적이 없는데 그 경로가 왜 사용되고 있을까요?
경로가 올바르지 않으면 404 페이지가 출력되거나 해야 하는데
친절하게도 스스로 경로를 찾아서 출력해 줍니다. ㅋㅋ
그래서 혹시나 해서 레이아웃 폴더도 비슷한 방법으로 시도해 보았습니다.
"http://XE 설치 경로/layouts/mytest/layout.html"
다행히 레이아웃은 바로 404 오류 페이지가 출력되었습니다.
다른 폴더 경로까지 다 확인해 보지 않았는데, 위젯의 하위 폴더의 내용이 오류없이 그대로 노출되는건 심각하다고 생각합니다.
단순히 html 파일뿐만 아니라, swf 파일도 그대로 출력되고 있었습니다. 사실 이 플래쉬때문에 문제가 되었던건데요...
xml 로 외부 경로 정보를 받아서 출력되는 swf 파일인데도 친철하게 스스로 xml 경로를 찾아서 출력해 줍니다.
단순히 http://XE 설치 경로/widgets/test/test.swf 로 했음에도 오류없이 그대로 출력됩니다.
이런 문제가 있다보니 트래픽이 증가할 수 밖에요...
호스팅 사에 문의해 보니, 처음에 캐시를 삭제하라고 해서 캐시 초기화를 했는데도 같은 결과 였습니다.
그래서 다시 문의를 해보니 .htaccess 와 관련된 문제라고 하더군요.
아마도 처음 보고된 문제는 아닐것 같은데...
이 부분에 대한 어떤 해결책이 필요하지 않을까요?
참고로 XE 최신버전입니다.
댓글 8
-
기진곰
2014.11.27 17:23
-
sejin7940
2014.11.27 19:42
한 수 배워갑니다 ^^
-
Paul
2014.11.28 03:21
기진곰님은 보안 관련쪽에 상당한 지식을 보유하신것 같습니다. 부럽습니다. 아래의 글에 공감했습니다.
보안이라는 것은 원래 블랙리스트(접근하면 안 되는 경로를 막는) 방식이 아니라 화이트리스트(img, css, js처럼 접근 가능한 경로만 빼고 모조리 막는) 방식을 취해야 하는데... -
배워서남준다
2014.11.27 21:40
일단은 4번째줄에 widgets 을 추가하였습니다. swf 도...
요즘은 따로 위젯을 만들지는 않고 레이아웃에 위젯 기능을 통합해서 사용중이라,
수정해도 특별히 문제되는 부분은 아직 없는것 같네요.
서드파트 모듈이나 위젯들이 작동하지 않을 수 있다면 좀더 고민을 해봐야겠네요...
그래도... 어드민 페이지에서 옵션으로 선택할 수 있으면 좋을것 같은데... 안될려나~?
-
XE
2014.11.28 10:20
htaccess에서 차단하지 않은 경로에 위치한 파일은 웹에서 접근가능합니다.
반드시 차단해야 하는 경로는 이미 차단이 되어 있는 상태입니다.
가진곰님의 말씀처럼 화이트리스트 방식으로 차단하여 보안을 강화할 수도 있겠지만, 보안과 유연성은 보통 반비례 관계이기 때문에 유연성을 해치게 됩니다.
일단, 접근되면 안되는 파일이 차단하지 않은 경로에 있다면, 해당 자료의 개발자가 잘못 개발한 것입니다.
XE는 XE에서 가이드하는 방법으로 개발할 경우, 보안을 보장해주어야 합니다.
유연한 개발을 위하여, XE가 가이드하지 않는 방법으로 개발하는 것을 반대하지 않습니다. 하지만 이런 경우, 개발자가 각자 보안에 신경을 써야 합니다.
그리고 swf 파일의 경우, 브라우저에서 실행되기 위한 파일이므로 당연히 직접 접근이 가능한 위치에 있어야 합니다.
xml을 전달받아 작동돼야 하는 swf파일이라고 해도 결국 브라우저에서 직접 접근하여 작동됩니다.
제대로 차단하려면 해당 swf에 대한 요청을 php가 받고, php가 swf파일을 읽어서 응답하는 방식으로 처리해야 합니다.
-
배워서남준다
2014.11.28 12:18
무슨 의미인지는 알겠는데...
아무리 그러해도 지정한 경로가 아닌 다른 경로에 있는 내용이 출력된다는건 보완해야할 부분 아닌가요?
위젯등 XE 기본 폴더 하위 경로의 파일을 접근 가능하게 하는건 유연성 때문이라고 한다면 그건 이해를 하겠는데...
그 상위 경로, 즉 XE 루트에 폴더가 존재하지 않으면 차단해야 하는것 아닌가요?
글쎄요.. 파일에 대한 부분보다는 경로에 대한 부분에서 저는 잘 이해가 안되네요~
그리고 한번도 사용한 적인 없는 폴더 이름의 경로가 누군가에 의해서 사용되고 있다는 것도 좀 이해 안되고요.
아무튼 감사합니다. 덕분에 여러가지 부족한 부분 알아가며, 보완해 나갈 수 있어서...
-
기진곰
2014.11.28 13:54
주소 중간에 아무거나 넣어도 접근이 가능한 것은 .htaccess 14,16줄 때문입니다.
왜 이렇게 접근이 가능하도록 해두었는지는 저도 이해가 안 되지만
mod_rewrite 지원이 잘 되지 않던 시절에 절대경로와 상대경로가 꼬이는 일이 있어서
억지로 이런 식으로 땜빵해 놓은 게 아닌가 하는 짐작이 드네요.
최신 버전의 XE에서는 경로가 이상하게 꼬이는 일이 없을 테니 지워도 될 것 같지만,
구버전에서 시작한 사이트는 잘못된 경로가 문서 내용 등에 남아있어서
함부로 지웠다가는 이미지가 엑박으로 보이는 등의 문제가 생길지도 모릅니다.
이래저래 XE에는 구버전에서 물려받은 찌꺼기가 많습니다.
-
배워서남준다
2014.11.28 19:59
서브 도메인 사용하다가 호스팅사 이전했더니 이미지가 엑박이 뜨네요~
이런 경우는 알아서 출력되면 좋으련만...
골치아파서 접어두고 있는중이에요~ ㅋㅋ
감사합니다. 덕분에 많은거 배워갑니다~ ^^
현재 배포되는 .htaccess에서는 아래의 주소에 직접 접근하는 것을 막고 있습니다.
- 경로에 layouts 또는 skins가 포함된 .html 파일
- 경로에 conf, queries, schemas 등이 포함된 .xml 파일
일반적인 모듈, 위젯, 레이아웃 등의 구조에 맞게 작성된 프로그램이라면
중요한 파일들은 모두 위의 패턴에 해당되어 보호받겠지요.
그러나 스킨 폴더를 별도로 사용하지 않고 모듈이나 위젯에 직접 포함시킨 파일이나,
위에서 지정한 것과 다른 확장자를 사용하는 파일은 보호되지 않습니다.
님의 경우 /widgets/test/content.html 경로는
스킨 폴더를 쓰지 않았으므로 보호되지 않고,
swf 파일은 .htaccess에 지정된 확장자가 아니므로 보호되지 않습니다.
보안이라는 것은 원래 블랙리스트(접근하면 안 되는 경로를 막는) 방식이 아니라
화이트리스트(img, css, js처럼 접근 가능한 경로만 빼고 모조리 막는) 방식을 취해야 하는데,
이제 와서 XE를 바꾸면 기존의 서드파티 모듈이나 위젯들이 작동하지 않을 수도 있어서
섣불리 고치는 것은 조심해야 할 것 같습니다.
정 필요하시다면 .htaccess에서 스킨폴더를 보호하는 부분을 찾아 (3~10줄)
님에게 필요한 경로나 확장자를 더 추가해서 쓰실 수는 있겠네요.