링크 주소 알 수 없는 게시물 주소 알아내기

interoperability | 2012-09-18

많은 사람들이 게시판의 글을 메신저나 메일로 공유하기 위해 주소를 복사해서 보내본 경험을 가지고 있을 것이다. 또한 그렇게 보낸 주소가 열리지 않는다는 답신을 받아본 사람도 많을 것이다. 보통 검색 결과나 게시판의 글과 같이 콘텐츠가 보여지는 용도로 사용되는 페이지는 데이터를 GET 방식으로 URL에 붙여서 보낸다. 그러면 그글의 위치가 URL로 표기되어서 다른 곳에 공유한다거나 즐겨찾기를 할 수 있게된다. 하지만 이렇게 변수명이나 변수값이 노출되면 보안상 좋지 않다는 잘못된 인식이 있어서 URL이 없는 페이지를 만드는 경우가 있다. 자세한 내용은 무려 6년전에 쓴 "잘못된 보안 권고 사항"을 참고해보기 바란다.

며칠 전에도 아는 분이 국가인권위원회의 한 게시물을 공유하기 위해서 트위터에 올렸다가 링크가되지 않아서 링크를 어떻게 걸어야 하냐는 질문을 하셨다. 예를 들어 공지사항 목록에서 첫번째 글을 클릭하면 그 글의 주소는 http://www.humanrights.go.kr/04_sub/body01.jsp로 나온다 하지만 이 주소를 복사해서 새창에서 열어보면 "잘못된 접근입니다."라는 경고문이 나온다. 재미있는 것은 메인에서 게시물 제목을 눌러서 들어가면 URL에 값이 나온다는 것이다. 그러면 보안때문은 아니라는 말인데...왜 이렇게 만들었는지 도무지 이유를 알 수 없다.

이런 사이트는 또 보안을 높이려면 검색 엔진에 검색이 되지 않아야 한다는 지침도 따르고 있어서 모든 검색 엔진으로부터의 접근도 막고 있다.

User-agent: *
Disallow: /

마치 "웜바이러스에 걸리지 않으려면 인터넷 선을 뽑으세요."라고 하는 것과 같다. 실제로 맘먹고 해킹하려는 사람은 robots.txt 쯤은 가볍게 무시해버리기 때문에 이렇게 막아도 아무 소용이 없다. 그리고 인터넷에 돌아다니는 수많은 로봇들 중에는 robots.txt를 지키지 않는 로봇이 허다하게 많다. robots.txt는 그냥 약속일 뿐이지 실질적인 구속력은 전혀 없다. 규약을 잘 지키는 검색엔진은 막아서 사이트 유입량만 줄이고 기대했던 정보 보호는 전혀 되지 않는 정말 무의미한 짓이다.

파이어폭스의 웹디벨로퍼 확장기능을 이용해서 이러한 글의 URL을 쉽게 찾을 수 있다. 우선 파이어폭스에 웹디벨로퍼 확장기능을 설치한다. 그러면 북마크 툴바 아래에 웹디벨로퍼 확장기능 메뉴가 나온다. 그리고 공지사항 목록 페이지로 간다. Firefox Web Developer Extension's Convert POSTs to GETs menu 여기서 글 제목을 클릭하기 전에 웹디벨로퍼 메뉴에서 Forms -> Convert form method -> Convert POSTs to GETs를 선택한다. 그러면 몇개의 폼이 변경됐다고 나온다. 이상태에서 글 제목을 누르면 URL에 변수들이 GET으로 붙어서 나오는 것을 확인할 수 있다.

http://www.humanrights.go.kr/04_sub/body01.jsp?page=1&NT_ID=9&SEQ_ID=606219&flag=VIEW&SEARCH_MODE=0&ADMIN_MODE=&ORDER=&S_TYPE=PROC&CA_ID=&PROCESS_ID=540&TITLE=%EC%9C%84%EC%9B%90%ED%9A%8C%ED%99%9C%EB%8F%99_%EA%B3%B5%EC%A7%80%EC%82%AC%ED%95%AD_%EC%9D%BC%EB%B0%98%EA%B3%B5%EC%A7%80&url=http%3A%2F%2Fwww.humanrights.go.kr%2F04_sub%2Fbody01.jsp%3Fm_link_url%3D04_sub%2Fbody01.jsp%26m_id1%3D72%26m_id2%3D74%26m_id3%3D200%26m_id4%3D%26m_name1%3D%EC%9C%84%EC%9B%90%ED%9A%8C%ED%99%9C%EB%8F%99%26m_name2%3D%EA%B3%B5%EC%A7%80%EC%82%AC%ED%95%AD%26m_name3%3D%EC%9D%BC%EB%B0%98%EA%B3%B5%EC%A7%80%26m_name4%3D&summary=&m_link_url=04_sub%2Fbody01.jsp&m_id1=72&m_id2=74&m_id3=200&m_id4=&m_name1=%EC%9C%84%EC%9B%90%ED%9A%8C%ED%99%9C%EB%8F%99&m_name2=%EA%B3%B5%EC%A7%80%EC%82%AC%ED%95%AD&m_name3=%EC%9D%BC%EB%B0%98%EA%B3%B5%EC%A7%80&m_name4=&search=S_TITLE&search_string=&list_num=10

엄청 길다. 이제 이 주소를 복사해 다른 창을 열고 주소창에 넣어보면 페이지가 잘 열리는 것을 확인할 수 있다. 다른 게시판도 같은 방법으로 URL을 구할 수 있다. 만약 서버에서 GET과 POST를 구분한다면 이 방법이 안통하게 되는데 보통은 구분하지 않고 REQUEST로 처리하기 때문에 잘 작동할 것이다.

Comments

  • 아크몬드 2012-09-19

    좋은 정보네요. :)

  • 윤정근 2012-09-19

    오~~ 완전 유용함. 파폭을 잘 안쓰는게 함정. ㅋㅋ

  • 신현석 2012-09-19

    오페라 userjs로 만들어줘? ㅋㅋ

  • finder 2016-06-27

    정말 뭐라 감사를 드려야 할 지 모르겠네요. post 방식 주소는 특정 확장기능이나 웹페이지를 이용해서 검색창에 곧장 추가하는 방법 외에는 도무지 주소를 얻어낼 길이 없어서 정말 몇 년 동안 여기저기 검색을 했는데도 주소 추출 방법을 찾지 못했습니다. 사실상 포기한 상태였는데, 오늘 검색하다가 이 게시글 보고 한방에 해결했네요. 몇 년째 끙끙 앓은 문제라서 짜릿하면서도 클릭 몇 번으로 해결되는 문제를 그렇게 끙끙 앓았어야 했는가 하는 서글픔도 듭니다. 게시글 작성해주셔서 감사합니다.

  • 감사합니다 2017-11-25

    안녕하세요~ 덕분에 URL은 깔끔하게 얻어냈습니다...그런데 서버에서 GET하고 POST를 구분하나봐요...이런 경우에는 방법이 없는건가요?

  • 신현석 2017-11-25

    서버에서 POST로만 값을 받게 처리한 경우는 달리 방법이 없을 것 같네요.

  • ㅇㅇ 2020-09-14

    정말 감사합니다. ^^

Post a comment

:

: 공개 되지 않습니다. Gravatar를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.