2014-10-02 6 views
0

우리는 제휴 프로그램이있는 asp.net mvc 응용 프로그램을 만들었습니다.크로스 사이트 로그인 및 리디렉션

당사 계열사는 고객에게 애플리케이션에 로그인하는 백그라운드 코드 (양식 아님)를 사용하게 할 수 있습니다.

로그인 한 후 사용자는 우리 자신의 URL 중 하나로 리디렉션되어야합니다.

우선,이 작업을 수행하는 방법에 대한 도움과 예제가 필요합니다.

두 번째로 실제로 가능한 경우라면 실제로 크로스 사이트 스크립팅 권한이 허용됩니까? 우리를 공격에 노출 시키는가?

도움을 주시면 감사하겠습니다. 여기 당신을위한 옵션입니다 안전하게이 작업을 수행 할 수

+0

동일한 계정에서 리디렉션을 재사용해야하나요, 아니면 일회성으로 전환합니까? 앞으로 리디렉션이 사이트로 직접 연결됩니까? 또한, 제휴사의 사이트 작동 방식에 대한 영향력은 어느 정도입니까? 그들이 만든 웹 서비스를 활용할 수 있습니까? – guildsbounty

+0

사용자는 우리 사이트에 영향을 미치지 않는 모든 제휴 사이트에서 지금 당장 로그인 할 필요가 있습니다. 우리는 그들에게 아무 것도 두 드릴 수 없습니다. "로그인하려면 클릭하십시오"또는 응용 프로그램에 대한 링크가 필요합니다. 이후 그들은 우리 사이트에 있습니다. – ilans

답변

1

간단한 링크, 리디렉션 할 수있는 유일한 방법은 GET으로, 당신은 다시 사용할 수있는 로그인 정보를 그런 식으로

을 통과하고 싶지는 않을 ... 웹 서비스처럼 작동하는 외장 컨트롤러를 제공하십시오. 적어도 다음 두 가지 조치를 포함하십시오. 하나는 사이트에서 새 계정을 요청하고 필요한 정보를 전달하고 다른 계정은 '원격 로그인'역할을합니다. 이 두 작업 모두 POST 만 허용하고 HTTPS를 요구해야합니다. 내부에서는 쿼리 문자열을 통한 데이터 전송을 허용해서는 안되며 POST 객체를 참조해야합니다 (암호화되어 있으므로 더 안전합니다).

'원격 로그인'작업은 제휴사가 전달한 사용자 이름과 비밀번호 (POST 개체로 암호화 됨)를 가져와 유효한지 확인해야합니다. 그런 다음 새로운 임의의 값을 생성해야합니다. 사용하는 좋은 방법은 GUID이며 반환하는 것입니다. 그런 다음 제휴사는 쿼리 문자열에 GUID를 전달하여 사이트로 리디렉션합니다. GUID는 일회용 로그인 토큰으로 사용됩니다 (다음 번에 로그인하려면 새 GUID가 필요합니다).

사이트에서 물건을 만들기 위해 특정 계정이 필요하지 않은 경우 '계정 만들기'를 생략하고 제휴사에게 원격 로그인 기능을 전송하여 해당 계정임을 확인하는 코드를 제공 할 수 있습니다 로그인을 요구합니다.

제휴사가해야 할 일 (실제 코드에이 코드를 붙여서 '페이지에 넣으면 작동 할 것입니다.')은 실제 원격 로그인에 대해 일회성 로그인을위한 GUID를 요청하여 AJAX가 사이트를 호출합니다. GUID를 받으면 사이트로 리디렉션됩니다.

이것은 가능한 최선의 방법은 아닙니다 ... 동작과 같은 싱글 사인온 (SSO)은 양측이 함께 작업하여 사용자에게 안전하고 보이지 않게 유지할 때 가장 적합하지만 작동 가능하고 합리적으로 안전합니다.

+0

고마워요! :) – ilans