인터넷 사이트에 접속을 하다 보면 가끔 '500 Internal Server Error' 이러한 메시지를 띄우면서 사이트 접속이 되지 않는 경우가 있다. 도대체 무슨 문제일까?
내 컴퓨터 문제일까 아니면 서버 문제일까? 자세히 알아보도록 하자
500 Internal Server Error
보통 이런 화면을 보여주면서 원하는 t사이트로 넘어가지 않고 멈춰있는 현상이 나타난다.
해당 에러 문구는 사이트 자체의 에러로 원인은 다음과 같다.
- 서버 사용량의 폭주로 인해 서비스가 일시적으로 중단된 것 또는 서버의 이상에 의한 문제.
- 서버 스크립트의 오류.
해당 홈페이지의 서버에 관리에 문제가 있어 생긴 것이니 개개인의 컴퓨터엔 문제가 없는 것으로 등장하는 500 에러는 접속하려는 사이트 서버의 이상이라고 보는 편이 옳다.(즉, 본인 컴퓨터 문제가 아니니 걱정하지 않아도 된다.)
다만 위의 1, 2번 구분은 의미가 없다. 어쨌든 웹서버가 500 에러를 전송했다는 것은 웹서버 자체의 가용량은 남았는데 DB 등 다른 시스템이 초과되었다는 의미다.
결국은 서버 스크립트 상에서 DB 접속에 실패하여 오류가 난 것일 확률이 매우 높은데, 이 경우 1번과 2번 모두에 해당한다. 이상적인 경우는 가용량을 넘어 폭주하는 경우 DB가 접속 가능한 지 미리 확인하는 코드를 추가하거나 접속 초과 오류만 특별히 컨트롤해서 오류 페이지 대신 '접속량 초과' 같은 메시지를 보내주는 게 옳다.
결국 1번이든 2번이든 오류메시지는 사용자에게 보여주지 않는 것이 가장 이상적인 상황이다. 하지만 현실적으로는 어렵다. 언제나 말은 쉽다 다만 개발자가 신이 아닌 이상 실수는 할 수 있지만 저런 오류가 사용자에게 노출되지 않도록 최대한 노력해야 하는 것은 맞다.
별로 중요한 정보는 아닐지라도 서버의 정보가 사용자에게 노출되는 것은 절대 좋은 일은 아니기 때문이다. 예를 들어 위 그림에 있는 오류를 보면 오류가 발생한 코드의 클래스 이름, 함수 이름 등이 다 노출되고 있다.
이를 미루어 어떤 라이브러리가 사용되었는지부터 언어가 java라는 것, 서버가 tomcat이라는 것까지 전부 노출되고 있는데 그 말은 이미 알려진 해당 라이브러리, 언어, 웹서버의 보안 취약점을 공격받을 수 있다는 것이다. 다만 저렇게 세세한 건 루프백이나 로컬 네트워크에서 접속했을 때만 뜨는 것이 일반적이다.
댓글