전형적인 보도자료 이므로 낚이지 말길. 그나저나 중화TV는 오죽하면 이런 보도자료를 냈을까?
참고로, '超級搜査令' 를 '쇼킹! 현장고발' 로 바꿔부른건 중화TV 이지 중국의 화위위성TV 에서 지은 제목이 아니다. 믿으 순간 낚이는거다..
전형적인 보도자료 이므로 낚이지 말길. 그나저나 중화TV는 오죽하면 이런 보도자료를 냈을까?
참고로, '超級搜査令' 를 '쇼킹! 현장고발' 로 바꿔부른건 중화TV 이지 중국의 화위위성TV 에서 지은 제목이 아니다. 믿으 순간 낚이는거다..
웹보안 시리즈 2번째 포스팅 '쿠키 조작' 에 대한 이야기이다. 원래 하려던 이야기는 쿠키가 아닌데, FattyMarine 님의 답글도 있고 하니 조금만 더 써볼까 한다. 이미 다른 포스팅을 드래프트로 걸어 놨는데, 순서가 바뀌게 되었다. 이건 어떻게 풀어야할지...
네이버 백과사전에서 찾은 쿠키의 정의는 아래와 같다.
인터넷 웹사이트의 방문기록을 남겨 사용자와 웹사이트 사이를 매개해 주는 정보.
고객이 특정 홈페이지를 접속할 때 생성되는 정보를 담은 임시 파일로 크기는 4KB 이하로 작다. 쿠키는 애초 인터넷 사용자들의 홈페이지 접속을 돕기 위해 만들어졌다. 특정 사이트를 처음 방문하면 아이디와 비밀번호를 기록한 쿠키가 만들어지고 다음에 접속했을 때 별도 절차 없이 사이트에 빠르게 연결할 수 있다.
쿠키는 웹사이트에서 사용자 PC(웹브라우저)에 저장해 놓은 Data 이다. 필요에 의해 불러 쓰고, 또 저장하고.. 이 과정을 반복하면서 쿠키를 '활용' 한다.
우리가 웹브라우저에서 웹사이트에 접속하면 초기 HTML 페이지와 JS, CSS, 이미지 파일 등의 구성요소를 다운로드해서 페이지를 보여준다. 필요한 구성요소를 받기 위해 웹서버에 요청(Request) 할 때마다 Request Header 에 쿠키 정보를 함께 보낸다.
위 그림을 보면 알겠지만 사실 쿠키가 Request Header 의 거의 대부분을 차지하고 있다. 1KB 정도 크기의 쿠키를 사용하는 웹사이트를 방문하면 웹브라우저에서 이미지 파일을 하나 가져올 때마다 쿠키를 포함해서 약 2KB 정도의 용량을 웹서버에 업로드 해야 한다. 이 때문에 대용량 쿠키를 사용하면 사이트 로딩속도가 느려진다!
아래와 같은 쿠키 사용 프로세스를 가진 사이트가 있다고 가정해보자.
1. 처음 웹사이트에 접속하면 '비로그인' 상태이며 쿠키에는 아무런 내용이 없다.
2. 로그인 과정을 거치면서 사용자 쿠키에 로그인ID를 내려보낸다.
3. 사이트에서 클릭 할 때마다 쿠키에 담긴 로그인ID를 웹서버로 전송하고, 웹서버는 쿠키 값을 받아 로그인 상태로 해석한다.
4. 로그아웃 버튼을 누르면 쿠키를 삭제한다.
언뜻 보기에는 아무런 문제가 없어 보인다. 하지만, 이런 순서로 진행된다면 어떨까?
1. 웹사이트에 접속하자마자 비로그인 상태에서 로그인ID 쿠키를 강제로 셋팅한다.
2. 사이트에서 클릭 할 때마다 쿠키에 담긴 로그인ID를 웹서버로 전송하고, 웹서버는 쿠키 값을 받아 로그인 상태로 해석한다.
3. 로그아웃 버튼을 누르면 쿠키를 삭제한다.
웹서버는 헤더에 담긴 쿠키에서 로그인ID 값이 있는지 검사해서 로그인 상태인지 판단한다. 하지만 쿠키가 웹서버에서 셋팅했는지 사용자가 셋팅했는지에 대한 판단은 불가능하다. 그냥 쿠기 값이기 때문이다.
실제로 어떻게 동작하는지 확인해 보자.
모 사이트에 접속한 화면인데, 위와 같이 로그인창이 나온다.
| javascript:alert("Cookies: "+document.cookie) |
주소창에 위의 내용을 붙여 넣으면 현재 사이트의 쿠키 정보를 보여준다.
여기에서는 로그인 아이디 정보는 없다.
| javascript:document.cookie='loginid=userid;path=/' |
임의로 쿠키값을 셋팅하기 위해 웹브라우저 주소창에 위의 내용을 붙여 넣는다.
웹브라우저는 주소줄에 입력한 내용을 표시해준다. 뒤로 가기 버튼을 눌러 방금 전 화면으로 돌아가보면
(새로 고침이 필요한 경우도 있다)
이렇게 로그인 되어있다. 물론 쿠키가 암호화 되지 않았기 때문에 가능한 초보적인 실수이다.
Fiddler 와 같은 Proxy Tool 을 사용하면 웹브라우저와 관계 없이 내가 원하는 쿠키를 100% 조작할 수 있다.
|
static function OnBeforeRequest(oSession:Fiddler.Session) } |
위와 같은 Fiddler Rule 을 사용하면 image.auction.co.kr 에 접속할때는 pcid=XXXX 라는 쿠키만 전송한다.
실제로도 위와 같이 전송되었다. 위의 내용은 단순한 예이며, 마음 먹기에 따라 얼마든지 원하는 내용으로 수정해서 웹서버를 속일 수 있다.
쿠키는 웹서버에서 세션으로 처리해야 하는 일을 대신해 준다. 서버 여러 대를 동시에 운영하는 로드밸런싱 환경에서 세션 공유와 같은 처리하기 어려운 문제도 쉽게 해결해 준다. 하지만 보안 마인드 없이 사용하면 허점을 노출하게 되며, 아무리 작은 허점이라도 비지니스에 치명적인 위협이 될 수 있음을 알아야 한다.
예전에 싸이월드에서 쿠키를 너무나도 정직하게 사용하던 시절이 있었다.
당시에 미니홈피 주인과 나와의 관계를 degree 라는 쿠키에 저장했는데, 값이 1이면 일촌이라는 의미였다. 바꾸어 말해 degree=1 이면 일촌이므로 누군가 능력이 되는 사람이 쿠키를 수정한다면 모르는 사람과도 일촌이 될 수 있었다. 실제로는 이 쿠키를 수정하면 일촌이 아니더라도 일촌인 것으로 인식해서 일촌공개 사진을 보여주었다.
그렇다면 쿠키를 수정하는 방법은 어렵고 복잡했을까? 해커만 가능했을까?
문제는 절대 그렇지 않았다는 점이다.
웹브라우저 주소창에
javascript:document.cookie='degree=1'
만 복사해 넣으면 누구나 가능할 정도로 쉽다. 허무하지 않은가? 보고 싶은 연예인 미니홈피의 일촌공개 사진. 헤어진 옛 애인의 일촌 공개 사진이 저렇게 단순하게 보여진다는 상황이. 아울러 나의 숨기고 싶은 일촌공개 사진들도 누구나 쉽게 볼 수 있다는 상황이...
(참고로 위의 방식이 문제가 되어 바로 수정되었다)
아직도 많은 사이트가 위와 같은 방식을 사용하고 있다. 말하자면 쿠키의 위험 에 노출되어 있다.
쿠키 보안의 최선의 방법은 쿠키를 사용하지 않고 세션으로 처리하는 것이다. 하지만 세션의 여러가지 단점으로 인해 쿠키를 사용하고 있다. 대형사이트는 성능상의 이유로 필연적으로 쿠키를 사용해야 한다.
쿠키를 사용해야 하면서도 보안을 유지하려면 어떻게 해야 할까? 답은 '암호화' 이다. 내용이 뭔지 모르게 복잡하게 만드는 것이다. 쿠키는 누구든지 간단하게 조회하고 수정할 수 있다. 어차피 노출 될 수밖에 없으니, 노출되더라도 무슨말인지 알아 볼 수 없게 만드는 것이다.
id=ibecky :누구든지 알 수 있다.
id=sru3489ruo387r : 이게 무슨 말이지??
쿠키 값을 암호화하면 쿠키를 보더라도 무엇을 의미하는지 알 수 없다. 물론 id 라는 변수가 있으니 ibecky를 암호화한 값이 sru3489ruo387r 라는건 눈치챌 수 있다. 그럼 tistory 를 암호화한 값은???
모르면 찍어야 하는데 무작정 찍다가는 수 십년은 족히 걸린 듯 하다. 이것이 바로 암호화를 사용해야 하는 이유이다.
한줄요약: 쿠키를 암호화하자.
네이버 사전에서 찾은 내용에 의하면 '검색' 은 아래의 의미를 갖고 있는 단어이다.
[명사]
1 범죄나 사건을 밝히기 위한 단서나 증거를 찾기 위하여 살펴 조사함.
2 책이나 컴퓨터에서, 안에 들어 있는 자료 가운데 목적에 따라 필요한 자료들을 찾아내는 일. '찾기', '검사'로 순화.
인터넷 검색 사이트, 검색 엔진 혹은 검색 포털, 이도 저도 아니면 그냥 포털 이라 불리는 사이트들의 미션은 뭘까?
사용자가 검색하는 검색어에 해당되는 결과를 잘 찾아주는 것? 광활한 인터넷을 구석구석 뒤져서 다 찾아 내는 것? 웹에서 찾은 결과만 연관성으로 정렬해서 보여주는 것?
내가 생각하는 검색은 '알려주는 것' 혹은 '제공하는 것' 이다.
검색 사이트는 검색 '엔진' 이어야 할 이유도 없고 '인터넷' 검색을 해야 할 이유도 없다. 사용자의 궁금증을 해소해 주면 된다. 사용자가 알고 싶어 하는 것을 알려주면 된다. 그 뿐이다.
그런 의미에서 네이버의 '편성표' 검색에 박수 짝짝짝~!
지난 7월 8일 웹호스팅 전문업체 '오늘과 내일' www.tt.co.kr 은 인터넷 커뮤니티 사이트인 디시인사이드 www.dcinside.com 의 하루 페이지뷰가 7월부터 1억 1천만회를 돌파했다고 보도자료를 배포했다. 이에 의하면 엠파스는 1일 6천만회의 페이지뷰를 기록하고 있으므로 디시인사이드가 '월등히' 앞선다는 의미가 된다.
이 같은 내용이 언론에 보도된 후 엠파스의 항의에 따라 '증빙' 자료를 공개했는데,
덧붙여 오늘과내일 측은
"로봇을 이용해 트래픽을 분석하는 랭키닷컴과 달리 오늘과내일은 '99년 부터 웹서버에 저장된 로그를 기반으로 데이터를 고객에게 제공하고 있다. 디시인사이드의 하루 페이지뷰가 1억1천만회를 돌파한 것은 맞다 "
라고 말했다고 한다. 내가 주목하는 점은 '웹서버에 저장된 로그' 라는 표현이다. 정확한 증거로 제시하기 위해 '웹서버에 저장된 로그' 라는 표현을 사용했겠지만, 이러한 표현이 오히려 디시인사이드 측 주장의 신뢰성을 떨어뜨린다.
내가 알기로 엠파스는 웹서버에 로그를 남기지 않는다. 웹사이트가 일정 규모 이상이 되면 아무리 필터링을 한다고 해도 서버 한 대당 로그의 양이 하루에 몇 기가 수준으로 커져버린다. 국내 상위권 사이트들은 이 같은 웹서버를 수백 수천 대씩 동시에 운영한다. 하루에 남겨지는 로그의 양이 상상을 초월하는 규모이다.
로그 분석을 위해 개별 웹서버에 남겨진 로그를 로그분석 전용 서버로 옮기는데, 대용량 스토리지도 필요하고, 이동하는 과정에서 네트워크 부하도 무시할 수 없다. 심지어 서비스에 영향을 주는 경우도 발생한다. 파일을 가져왔으면 이제 분석해야 하는데, 단순하게 PV만 세는데 그치지 않고, 접속자의 패턴 등을 분석하는데 꽤 많은 리소스와 시간이 소요된다. 심지어 하루 안에 분석이 완료되지 않아 보고의 가치를 상실하기도 하고 이런저런 이유로 데이터가 유실되거나 잘못된 분석이 나오기도 한다. 혹자는 개별 서버에서 분석해서 보면 되지 않겠냐고 하는데, 로드밸런싱 서버 환경에서 그렇게 하면 UV 분석이 엉망이 되어 버린다.
웹서버에서 로그 분석을 하지 않는 또 하나의 이유는 '캐시서버' 혹은 '웹가속기' 이다. 웹서버 앞단에 캐시 서버가 위치하고 있는 경우에 실제 사용자의 요청이 100% 모두 웹서버에 전달되지 않는다. 따라서 웹서버에 로그를 남기면 실제 보다 낮은 수치가 나오고, 접속 경로나 패턴 분석에 누락된 자료가 생긴다. 캐시서버나 웹가속기를 사용 하는 경우에는 이들 솔루션이나 더 앞에 있는 네트워크에서 사용자 요청을 캡쳐해야 한다.
엠파스는 웹서버에 로그를 남겨서 분석하는 방식 대신에 사이트로 들어오는 네트워크 패킷을 캡쳐해서 분석하는 솔루션을 사용 중이다 (참고). 내가 일하는 회사도 대형 포털은 아니지만 웹서버에 로그를 남기지 않고 별도의 솔루션을 사용하고 있다. 우리가 알고 있는 대부분의 업체는 이런 방식으로 웹로그를 분석하고 있다. 따라서 '웹서버에 저장된 로그 분석' 운운하는 것은 스스로 낮은 접속자를 고백하는 셈이다.
그리고 한가지 더.
이제 PV는 더 이상 가치 부여되는 항목이 아니다. 마음만 먹으면 Include, Frame, IFrame, JS 등을 통해 얼마든지 뻥튀기 할 수 있으며, Ajax 등의 기법을 통해 얼마든지 줄일 수도 있다. 그리고 사이트 특성에 따라 PV가 많이 나오는 사이트가 있는 반면에 PV가 적게 나오는 사이트가 있다. 요즘 뜨는 UCC 사이트는 동영상을 보는 몇 분 동안 다른 페이지를 클릭하지 않기 때문에 PV가 적게 나온다. 디시인사이드는 게시판 '방법'을 한다고 하면 순간적으로 엄청난 PV를 올릴 수 있다. 싸이월드도 한창 때 PV 기준으로 네이버를 추월하기도 했다. 하지만 지금 기업 가치는 8천억(엠파스*4배)과 8조(NHN)로 무려 10배 차이가 난다. PV가 사이트 가치 평가 기준이라면 엠파스 주식이 지금 보다 10배 올라있어야 하지만 현실은 그렇지 않다.
디시인사이드의 특성상 방문자 UV 에 비해 PV가 많이 나오는 사이트다. 실제로 특정 이슈로 인해 PV가 폭주해서 엠파스를 추월했을 수도 있다.
그래서 어쩌라고?
UV는 한참 딸리잖아!!!
기업에서 '주식'을 통한 근로자 보상 프로그램으로 가장 많이 사용되는 방법 중에 하나가 '스탁옵션' 과 '우리사주' 이다.
스탁옵션은 회사의 주식을 미리 정해진 가격에 미래 시점에 구입할 수 있는 '권리(옵션)' 를 부여하는 제도이다. 행사 시점이 되어서 주가가 오르면 미리 정해진 가격과 거래되는 주가의 차액을 얻게 된다. 만약 주가가 행사가 보다 하락하면 '권리'를 행사할 필요가 없으므로 손해 보는 일은 없다.
우리사주는 스탁옵션과 약간 다른 개념이다. 주식을 약간 할인된 가격으로 '지금' 구입할 수 있지만, 대신 (6개월~ 1년 정도의) 정해진 기간 동안 주식을 팔 수 없다. 만약 20% 할인해서 사게 되면 20%의 차익이 발생하지만, 1년 후에 주가가 내릴 수 가능성이 있다는 리스크를 부담해야 한다. 물론 1년 동안 주가가 더 오를 가능성도 있지만, 내릴 가능성도 분명히 있다. 주가가 오르건 내리건 1년 동안 주식을 팔 수 없다는 점은 하루 하루 오르고 내리는 주식에서는 분명 위험이 된다.
하이닉스가 대기업으로는 처음으로 우리사주조합원 전원에게 우리사주 매수선택권을 부여했다고 한다. 대상자는 18,000명. 6/29 종가에서 20% 할인된 26,700원에 1인 당 최대 224주까지 구입할 수 있다. 물론 1년간 의무 보유기간이 설정되어 1년 후에 팔 수 있다.
600만원으로 720만원 어치 주식을 구입하므로 1인당 120만원의 이익이 남는다. 하지만 120만원은 지금 주식을 판매해야만 발생하는 수익이다. 주가가 하락하면 고스란히 손해를 보게 되며, 주가가 20% 하락해서 26,700원 이하로 떨어지더라도 1년간은 매도가 불가능하다는 리스크가 있다.
그러니까.. "하이닉스, 전직원에 스톡옵션" 이라느니. "1인당 600만원" 이라느니 하는 기사는 '발'로 썼다는 얘기가 된다.
이번 하이닉스의 일명 '스탁옵션'은 1년 후에 받게 되는 120만원 짜리 보너스인 셈이다. 대기업에서 직원들에게 보너스로 120만원 준다는데… 왜들 난리신지..?
인터넷에 어두운 기운이 몰려오고 있다.
오늘, 아니 어제,
인터넷 쇼핑몰 A사, B사, C사,
포털 A사, B사,
그리고 또 몇몇 A사, B사가
"장애" 났었다.
모 업체는 하루에 3번이나 죽었다는 소문도 들린다.
아무래도 불안하다. 무언가 있다..
6/27일 엠파스 종가 19,150 원
7/11일 기준일 현재 주주는 엠파스&SK컴즈 합병에 반대하는 경우 9/6일 ~ 9/27일까지 주식매수청구권을 행사할 수 있는데, 행사가는 18,092원
지금 산 주식이 아무리 떨어져도
만원이 되도 천원이 되도
9/27에 18,092원이 보장된다.
아무리 떨어져도 5.5% 만 손해보면 되는 게임.
끌리는데?
오늘 오전 공시를 통해 엠파스&SK컴즈 합병을 발표했는데, 공시 내용에 '오해'의 소지가 있어 언론에서 줄줄이 '오보' 를 생산하는 결과가 나왔다.
합병 비율은 엠파스 1주당 SK컴즈 3.32주다. - 언론기사
대부분 언론 기사에서 위와 같이 언급하고 있다. 엠파스 1주당 SK컴즈 3.32주 라면, 엠파스 주식을 1주 갖고 있는 주주라면 합병 회사에서 SK컴즈 주식 3.32주와 동동한 값어치이고, 바꿔 말하면 SK컴즈 주식 3.32주가 있어서 엠파스 주식 1주로 바꿀 수 있다는 의미가 된다. 그렇다면 원문은 어떻게 되어 있을까?
합병비율 | (주)엠파스:에스케이커뮤니케이션즈(주)=1:3.3197311 - 전자공시
합병 비율을 1:3.32 로 했는데. 여기에서 말하는 합병 비율은 주식 교환 비율이 아니라, 두 회사 간의 가치에 대한 비율이다. 즉, 엠파스가 1 이라면 SK컴즈는 3.32 크기가 된다. 따라서 주식 교환 비율은 엠파스 1주당 SK컴즈 3.32주가 아니라, SK컴즈 3.32주당 엠파스 1주가 된다.
합병신주 30,316,721 가 발행된다는 내용이나 합병후 SK텔레콤의 지분이 26,041,478 주가 된다는 내용이 이를 뒷받침한다. 두 회사의 발생 주식수는 각각 10만주 정도가 되므로 SK컴즈의 기발행 주식 10만주를 1:3.32 비율로 엠파스 주식으로 바꾸면 30,315,721주가 되는 것이다.
또, 엠파스의 발행가능한 총 주식수가 4천만주인데, 기존 엠파스의 천만주와 합병으로 발행되는 3천만주를 더하면 4천만주를 약간 넘게 되므로 초과발행하는 셈이다. 그래서 공시 자료에 이 부분을 해소하기 위해 임시주총이 계획되어있다고 했다.
결론은, 기자들 남의 기사 컨닝하지 말고 직접 써라.
에이스카운터라는 업체에 따르면 구글의 검색 유입율이 네이버,다음,야후,엠파스에 이어 1.68%로 5위를 차지했다고 한다. 수치는 꾸준히 상승하고 있으며, 마케팅도 안한 구글이 상승하고 있으니 구글이 한국 시장에 집중하면 네이버를 제치고 1위를 차지하는 것도 시간 문제라고 호들갑을 떠는 사람들도 있다.
그런데, 검색 유입율 이라는게 뭔가? 에이스카운터에 따르면 '국내 주요 검색엔진을 통해 웹사이트에 방문하게 되는 비율' 이라고 한다. 검색 쿼리수가 아니라 검색 결과를 타고 밖으로 나가는 사용자의 비율이라는 얘기다.
'검색유입 = 검색쿼리 - 내부링크' 라는 간단한 공식이 나오고, 전체 검색 유입의 수에 대비한 사이트별 퍼센티지가 바로 검색유입율 되겠다.
아무리 검색 쿼리수가 많아도 내부 링크 위주로 운영되고 있다면 아웃링크의 수는 적을 수 밖에 없다. 내자료 네자료 얘기는 논점이 아니므로 스킵하기로 하고,
네이버의 검색결과 페이지에서 내부 링크와 외부 링크의 클릭 비율이 어떻게 되는지는 모르겠지만, 공식 사이트로 이동하는 수단으로서의 클릭외에(주로 키워드 클릭이 되겠지만), 밖에 있는 자료는 별로 클릭하고 싶어하지 않는 대다수 네티즌의 성향을 참고한다면, '네이버 쿼리수 - 내부링크' 가 '구글 쿼리수'의 무려 40배나 된다는 얘기가 되겠으니..
한마디로, 구글빠들 꿈깨시라!