2012-02-26 4 views
0

다른 웹 사이트에 액세스하는 데 사용하는 포털이있는 경우.웹 사이트간에 데이터를 안전하게 전달하는 방법은 무엇입니까?

포털 A이 있다고 해봅시다. 그리고 웹 사이트 B에 접속하고 싶습니다.

Busername처럼 작동하려면 몇 가지 중요한 정보가 필요합니다. 나는이 정보를 안전하게 전달하고 싶다.


는 그래서 난 형태로 다음과 같이합니다

<%--------------------------------------------------------------------------------------%> 
    <form id="frm_sal" action="B URL the first page" method="post"> 
    <input id="hdn_sal_Emp_Num" type="hidden" runat="server" name="hdn_sal_Emp_Num" /> 
    <input id="hdn_sal_user_name" type="hidden" runat="server" name="hdn_sal_user_name" /> 
    <input id="hdn_sal_result" type="hidden" runat="server" name="hdn_sal_result" /> 
    </form> 
    <%--------------------------------------------------------------------------------------%> 

포털 A에서 링크의 이벤트 클라이언트 클릭으로

, 나는이 양식을 제출합니다.

각 웹 사이트에 대해 하나의 양식.

내 질문은 이러한 데이터를 보호하고 조작을 방지하는 방법에 관한 것입니다.

+1

'B'에 대한 일반적인 보안 조치로이 문제를 방지하려고 시도합니다. –

+0

변조 또는 해킹을 방지하기 위해 숨겨진 필드를 어떤 방식으로 보호해야합니까? –

+0

두 사이트 모두 동일한 데이터베이스에서 읽을 수 있습니까? –

답변

2

<form>의 정보를 클라이언트에 보내기 전에 암호화 한 다음 개인 키를 사용하여 다른 쪽 끝의 암호를 해독합니다.

다음은 좋은 암호화 예입니다. Encrypt and decrypt a string

내가 뭘 좋아하니.'SharedSession'이라는 클래스를 만들고 공유 할 속성을 추가하면 속성이 다른 클래스가 될 수도 있습니다. timestamp 속성도 추가하십시오. 클래스를 Json 문자열 (Json.net)로 직렬화하고 암호화하여 양식 필드로 이동하십시오.

양식을 다른 쪽 게시 할 때 'SharedSession'클래스로 역 직렬화하십시오.

두 가지 이유로 타임 스탬프 필드를 사용 :

1) 항상이 변경 암호화 된 데이터처럼 보이게 할 수 있습니다. 예를 들어, 현재 사용자에 대해 동일한 자격 증명을 계속해서 보내면 암호화 된 문자열이 변경되지 않으므로 타임 스탬프는 암호화 된 문자열을 매번 다르게 표시합니다.

2) 게시 된 데이터가 부실하거나 오래되지 않았는지 확인하십시오. 약 1 분 정도 임계 값을 설정하십시오. 데이터가 1 ​​분 이상 지난 경우에는 폐기하십시오.

EDIT 

또 다른 점은 .... 당신의 숨겨진 양식 필드 'SharedSessionData'또는 해커가에 관심이있을 것 아무것도 전화 '홍보 - 광고 데이터'와 같은 이름을 호출하지 않는 그들을 밖으로 던져합니다.

희망이 도움이됩니다.

2

몇 가지 방법이 가능합니다.

첫 번째는 fasion에서 쿼리 문자열을 암호화하는 것이고 mcrypt는 크로스 플랫폼을 지원합니다. 이것은 소금/패스 프레이즈를 깨지 않는 사람에게 의존합니다. 이것은 소금을 자주 바꾸어 완화 할 수 있습니다. . 당신이 가진 다른 문제는 회신 공격입니다. 누군가가 다른 사용자의 브라우저에 URL을 복사하여 복사하면됩니다. 재사용 할 수없는 onetime 토큰과 함께 URL의 datetime을 사용하면이 문제를 완화 할 수 있습니다.

다른 방법은 한 사이트에서 다른 서버로 사용자를 보낼 때 (고유 토큰/GUID를 사용하여) 서버 통신 프로토콜 (SOAP, REST, 무언가를 만든 다음) 사용자에게 전달할 토큰을 제공하십시오.

웹 사이트가 내부적이지 않은 한 항상 IP 주소를 통해 잠그지 않아야합니다. 많은 사용자가 여러 IP 주소를 사용하고 여러 규칙을 사용하여 IP를 따라 데이터를 분산하므로 중간 요청을 변경할 수 있습니다. AOL은 하나의) 여러 개의 끝점과 다른 주소를 가진 프록시를 통해 사용자를 강제합니다.

마지막 옵션은 공유 데이터 저장소, 즉 사용자 정보를 쿼리하기 위해 두 웹 서버가 '대화'할 수있는 데이터베이스를 갖는 것입니다. 두 도메인에서 작동하는 세션 쿠키를 설정할 수 있도록 동일한 도메인에있는 경우이 작업이 더 쉬워집니다. 그렇지 않은 경우 전달되는 고유 한 토큰으로 되돌아 가야합니다.

1

Pass data from page to page safely 사용자는 민감한 데이터를 저장하고 캐시에 저장하는 맞춤 클래스를 만드는 것에 대해 설명합니다. 나는 또한 당신이 여기서 이야기하는 내용을 성취하기 위해 세션을 사용할 수 있다고 믿습니다 : How to pass a hidden field from one page to another?

제가 믿는 몇 가지 방법이 있습니다. 최고지만, 내가 제공 한 링크가 올바른 방향으로 당신을 가리 키길 바랍니다.