2012-03-12 2 views
3

두 위치에 두 개의 서버가 있습니다. 서버 1은 서버 2가 확인하는 사용자 정의 사용자 에이전트를 사용하여 PHP 2 (CURL 세션)을 통해 서버 2의 클라이언트 정보 (예 : 주소, 전자 메일 및 전화 번호)를 뺍니다. 서버 2는 JSON 문자열을 제공합니다.curl과 mcrypt를 통해 두 서버 간을 연결하십시오.

은 확실 두 가지를 만들고 싶어 : 어떤 하나는 실제 데이터를 볼 수 없습니다 내 패키지를 킁킁 경우

  1. 을;
  2. 일부 서버 (적절한 사용자 에이전트가있는 서버)에서 PHP 페이지를 호출하려고하면 뭔가 (예 : 클라이언트 이메일 또는 전화 번호)이 이해가되지 않습니다.

다른 방법을 살펴본 후 서버 2에서 JSON 텍스트 문자열을 암호화하려고합니다. 서버 1에서 말아서 얻으십시오. 그것을 공유 키로 해독하십시오.

것들 내가 알고 싶습니다 :

  1. 어떤 암호 사용해야합니까?
  2. 잔인한가요?
  3. 또는 더 좋은 방법이 있나요?

동의어 : 두 서버를 병합하는 것은 옵션이 아닙니다.

답변

1

자신의 암호화 루틴을 구현하는 대신 https를 통해 서버 2에서 json 데이터를 제공하는 것이 좋습니다. 그러면 암호화가 제대로 처리됩니다.

인증서를 구입할 필요가 없으며 server2에 자체 서명하고 server1에서 "안전하지 않은"https 연결을 허용 할 수 있습니다 (안전하지 않으면 인증서가 신뢰되지 않지만 데이터는 여전히 암호화 됨).

누가 서버 2에서 데이터를 요청할 수 있는지 허용하려면 가능하면 ip로 화이트리스트를 만드십시오. 다른 방법 (또는 추가로)은 공유 된 비밀을 가진 간단한 서명 시스템이 될 수 있습니다.

$sig = sha1($user_agent 
      . $date_header_value 
      . $http_request_path 
      . $http_query_string 
      . $http_raw_post_payload 
      . $shared_secret); 
: 서버 1 요청 ("내 서명"라고)과 설정 서명 "알고리즘"(아래 PHP에서 간단한 예제)를 사용하게되면

그림를 들어, 사용자 정의 HTTP 헤더를 설정 당신이 원하는만큼 복잡로

My-Signature: $sig 

당신은 당신의 서명 시스템을 만들 수 있습니다

그런 다음 요청 헤더를 설정할 수 있습니다.아이디어는 server2가 동일한 서명 "recipe"을 알고, 요청 헤더, 쿼리 문자열 및 게시 페이로드에서 필요한 모든 필드를 추출하고 공유 암호를 사용하여 해당 측의 서명을 계산할 수 있다는 것입니다.

계산 된 서명과 My-Signature 헤더에 전달 된 서명을 비교하여 일치하는 요청을 제공합니다. 그렇지 않은 경우 403 응답 페이지를 제공하십시오.

0
  1. 아니요, 과용되지 않습니다. 서버간에 전송하는 동안 데이터를 암호화하는 것이 좋습니다.
  2. 사용자 지정 사용자 에이전트와 함께 서버에도 고정 IP 주소가 있어야합니다. IP 확인을하십시오. IP가 기대하지 않은 것이라면 스누핑 사용자가 스크립트가 아닌 Apache에 의해 잠겨 있다고 생각하게하는 403 금지 된 기본 화면을 표시하십시오.

나는 암호로, 나는 진짜로 도울 수 없다. Google하세요.

관련 문제