2012-10-04 3 views
1

내 사이트의 제품 페이지에 인벤토리 검사기를 만들었습니다. 그것은 클릭 AJAX를 제출 버튼을 다음과 같이 구성되어 컬 기능을 사용하여 제품의 재고를 검색합니다컬을 사용할 때 어떻게 쿠키를 보호합니까?

function inventory($sku) { 
    $url = 'http://www.example.com/product/' . $sku; 
    $curl = curl_init($url); 
    $referer = 'http://www.google.com/search'; 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_COOKIEFILE, '/cookie.txt'); 
    curl_setopt($curl, CURLOPT_REFERER, $referer); 
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); 
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10'); 
    $html = curl_exec($curl); 
    curl_close($curl); 
... 
} 

나는에 연결 오전 URL을 내가 액세스에 로그인하고 있어야하는 내 공급 업체의 사이트입니다 그들의 인벤토리 페이지. 이 페이지는 http를 통해서만 액세스 할 수 있습니다. 공급 업체의 사이트에서 보낸 쿠키를 복사하고 만료 날짜를 0으로 설정했습니다. 쿠키에는 ASP.NET 세션 ID가 들어 있습니다.

쿠키를 안전하게 보관할 수있는 방법이 있습니까? 그리고 그렇지 않은 경우 누군가가 쿠키를 납치하고 로그인 할 때 내 공급 업체 사이트에 액세스하는 것이 얼마나 쉬운가? 내 이해에서, man-in-the-middle 공격은 내 서버와 내 공급 업체의 서버 사이에있는 사람이해야합니다. 이 올바른지?

+0

중간자 공격은 내 서버와 내 공급 업체 서버 사이에있는 사람이해야합니다. 이 올바른지? ** 예, 맞습니다. ** –

+1

데이터 패킷을 스니핑하는 확률은 매우 적습니다. 서버를 해킹하고 쿠키를 cookiejar/cookiefile에서 잡아내는 것이 훨씬 쉽습니다. –

+0

@LuisSiquot 확인해 주셔서 감사합니다. – Paul

답변

0

첫 번째 단계는 귀하의 ajax 호출에 https://을 사용하십시오. 공급자의 서버에 사용자 지정 암호화를 해독 할 수있는 코드가 없다면 (JSON이 쿠키 배열을 인코딩 한 다음 mcrypt로 암호화 한 다음 공급자 사이트에서 해독하고 다시 작성한다고 가정하면) 공급 업체 측의 RESTful API. SSL을 요구하지 않으면 SOL이됩니다.

+0

내 도움으로 https : //를 어떻게 사용합니까? 대답을 주셔서 감사합니다 – Paul

+0

나는 당신의 아약스 전화에 대한 https를 사용했다. – AlienWebguy

0

HTTP 트래픽을 보호하는 가장 쉬운 방법은 HTTPS를 사용하는 것입니다. SSL에서 전체를 래핑하면 요청의 암호를 해독하지 않고 볼 수있는 유일한 것이 요청의 도메인 이름입니다.

HTTP를 통해서만 액세스 할 수 있다면 SSL 인증서에 투자하는 방법에 대해 이야기해야합니다. 자체 서명 된 경우에도 (암호화를 제공하지만 확인하지는 않음) 다른 쪽 끝에있는 서버의 ID 및 트래픽이 여전히 암호화되어 있어도 대부분의 브라우저는 안전하지 못하다는 것에 대한 적합성을 나타냅니다. HTTP를 제공하는 공급 업체 만이 공격을받을 수 있습니다. 특히 세션 ID와 관련이있는 경우 특히 그렇습니다.

+0

그들은 SSL 인증서가 있지만 사이트의 체크 아웃 페이지 (로그인 페이지 제외)에만 있습니다. 그 (것)들에게 전자 우편을 보내기 위하여 총 가치가 있을지도 모르다. 감사 – Paul

0

정말로 HTTPS가 아닌 HTTP를 통해 재고 공급 업체에 액세스 했습니까?

전체 통신이 안전하지 않고 임의로 스니핑되거나 차단 될 수 있기 때문에 쿠키와 함께 할 수있는 방법은 없습니다. 두려워 할 경우 도움이되지 않습니다.

반면에 쿠키 자체는 일반적으로 서버에서 설정하며 두 가지 옵션을 사용할 수 있습니다. 1) httponly 2) 보안.

1) httponly는 브라우저가이 쿠키를 Javascript에서 사용할 수 없도록 설정하고 만료 될 때까지 다음 요청시에만 HTTP를 통해 다시 보내도록 지시합니다.

2) secure는 브라우저가 암호화되지 않은 통신을 통해 쿠키를 보내지 않도록합니다. 즉, HTTP가 아닌 HTTPS를 통해서만 전송합니다.

귀하의 컬이 브라우저입니다. 귀하의 컬은 자바 스크립트가 없으므로 첫 번째 옵션은 쓸모가 없습니다. 그리고 심지어 컬은 어떤 쿠키가 설정되어야 하는지를 알고 있어야하며, 자바 스크립트에서 사용할 수 없도록하려는 서버를 쉽게 무시할 수 있습니다.

귀하의 말풍선은 귀하가 그렇게하도록 프로그램 한 경우에만 쿠키를 다시 보내드립니다. 안전하지 않은 채널을 사용하는 것이 좋은 생각이라고 생각되면 보안 플래그가 사용자를 방해하지는 않지만 쿠키 자체에 보안을 추가하지는 않습니다.

쿠키 값은 항상 통신의 양쪽에서 암호화되지 않습니다. 스니핑에 대한 유일한 보안은 HTTPS를 사용하여 추가됩니다.쿠키 옵션에 관한 다른 모든 사항은 쿠키의 위험을 줄이기 위해 브라우저의 동작을 보호하기위한 목적으로 만 사용됩니다.

쿠키를 다시 보낼 때 추가 할 수있는 옵션이 없습니다.

관련 문제