2009-03-13 6 views
51

저희 사이트에서는 개인 정보 (양식을 통해 제공)를 기반으로 사용자에게 시뮬레이션을 제공합니다. 우리는 나중에 시뮬레이션 결과를 다시 얻을 수 있지만 로그인/암호 계정을 만들지 않아도됩니다.https 토큰 매개 변수가있는 URL : 얼마나 안전합니까?

우리는 링크를 통해 결과를 얻을 수있는 이메일을 보내려했습니다. 그러나 개인 데이터가 위험에 처해 있기 때문에 당연히이 URL을 보호해야합니다.

URL에 40 자의 문자와 숫자 또는 MD5 해시 조합과 같은 토큰을 전달하고 SSL을 사용하려고합니다. 당신이 그것에 대해 어떻게 생각하십니까

안녕, https://www.example.com/load_simulation?token=uZVTLBCWcw33RIhvnbxTKxTxM2rKJ7YJrwyUXhXn


물러서 결과 :

마지막으로, 그들은 같은 이메일을받을까요? 충분히 안전합니까? 토큰 생성에 대해 나에게 어떤 조언을 해주겠습니까? https 요청에서 URL 매개 변수를 전달하는 것은 어떻습니까?

+1

http://www.securityweek.com/hackers-can-intercept-https-urls-proxy-attacks – Tom

답변

65

SSL은 전송 중 쿼리 매개 변수를 보호합니다. 그러나 전자 메일 자체는 안전하지 않으며 전자 메일은 대상에 도달하기 전에 원하는 수의 서버를 따라 이동할 수 있습니다.

웹 서버에 따라 전체 URL이 로그 파일에 기록 될 수 있습니다. 데이터의 민감도에 따라 IT 담당자가 모든 토큰에 액세스하지 못하게 할 수 있습니다.

또한 쿼리 문자열이 포함 된 URL은 사용자 기록에 저장되므로 동일한 컴퓨터의 다른 사용자가 URL에 액세스 할 수 있습니다.

마지막으로, 이는 매우 위험합니다. URL은 모든 리소스에 대한 모든 요청, 심지어 제 3 자 리소스의 Referer 헤더로 전송됩니다. 예를 들어 Google 웹 로그 분석을 사용하는 경우 Google에 URL 토큰을 모두 보내드립니다.

제 의견으로는 이것은 나쁜 생각입니다.

+1

나는 HTTP 리퍼러 문제에 대해 생각해 보지 못했지만, URL 링크가 결과 페이지로 리다이렉트 될 것이고, 적절한 페이지 (Google Analytics 나 다른 써드 파티 스크립트가 아님)가 아닐 것이다. – Flackou

+5

HTTPS에서 HTTP로 갈 때 대부분의 브라우저가 리퍼러를 제거하지 않습니까? –

+1

IE를 테스트하지 않았을 때 – JoshBerke

1

전자 메일은 본질적으로 안전하지 않습니다. 누구나 해당 링크를 클릭하여 데이터에 접근 할 수 있다면 실제로 보호하지는 못합니다.

+0

정확하지만 많은 사이트는 그것에 대해 신경 쓰지 않고 로그인/암호를 우편으로 보냅니다. 그러나 그들을 모방 할 이유가 아닙니다 ... – Flackou

+0

처음에 로그인 한 후에 암호를 변경하라는 메시지가 나타납니다. –

2

SSL은 전송중인 데이터의 내용을 보호하지만 URL에 대해서는 확실하지 않습니다.

공격자가 해당 URL 토큰을 재사용하지 못하게하는 한 가지 방법은 각 토큰을 한 번만 사용할 수 있는지 확인하는 것입니다. 합법적 인 사용자가 계속 링크를 사용할 수 있도록 쿠키를 설정할 수도 있지만 처음 액세스 한 후에는 쿠키가있는 사용자에게만 작동합니다.

사용자의 이메일이 유출되어 공격자가 링크를 먼저 얻는다면, 글쎄, 당신은 멍청이야. 그러나 사용자에게는 더 큰 문제가 있습니다.

+6

URL을 전송하기 전에 SSL 연결이 안전합니다. – David

-1

해커가 데이터베이스에 액세스하면 많은 개인 정보를 자유롭게 제공 할 수 있다는 것을 알고 계십니까?

그 후에 나는 이것이 생각으로 나쁘지 않다고 말할 것입니다. MD5 나 SHA1은 해시를 위해 매우 안전하지 않으므로 사용하지 않을 것입니다. 그것들은 "암호 해독"될 수 있습니다 (나는 그것이 암호화가 아니라는 것을 알고 있습니다).

그렇지 않으면 이메일 종류의 비밀번호로 전송되지 않는 제 2 정보를 사용하고있을 수도 있습니다. 이유는 아주 간단합니다. 누군가가 사용자의 이메일에 액세스 할 수 있다면 (세션을 종료하지 않으면 핫메일을 사용하면 매우 쉽습니다) 사용자가 보낸 모든 정보에 액세스 할 수 있습니다.

HTTPS는 사이트에서 최종 사용자에게 보내는 데이터를 안전하게 보호하고 암호화합니다. 다른 것은 안전한 터널로 가져 가세요. 아무것도 더 적게하지 않습니다.

+0

소금에 절인 SHA1 해시가 단어 감각으로 정확히 해독되는 방법은 무엇입니까? – Eli

+0

"해커가 데이터베이스에 액세스하면 많은 개인 정보가 자유롭게 주어질 수 있다는 것을 알고 있습니까?" 예,하지만 모든 웹 사이트에서 문제가되지 않습니까 ?? – Flackou

+0

@Flackou 네,하지만 페이팔의 DB에 접속하면 분명히 저장된 모든 신용 카드 정보를 암호화하지 않을 것입니다. @Eli : http://www.theregister.co.uk/2005/02/17/sha1_hashing_broken/ – Erick

1

SSL을 통과 할 때 토큰은 안전합니다. 당신이 가지게 될 문제는 URL을 볼 수있어 사람들 (사람들이 의도하지 않은 사람들)에게 유용하다는 것입니다.

SSN과 같은 개인 정보 인 경우 전자 메일을 통해 URL을 보내지 않을 것이라고 생각합니다. 차라리 사이트의 사용자 이름과 암호를 만들어야합니다. 당신과 그 (것)들을 위해 걸린 정보의 종류를 가진 전자 우편을 타협하는 것은 너무 쉽다. 누군가의 계좌가 타협되면 그것은 정말로 잘못이있는 quesion이 될 것입니다. 엄격하게 CYA 관점에서 더 안전할수록 좋습니다.

+0

맞습니다. URL은 브라우저 기록에 남아 있습니다 (예 : – Flackou

-1

나는 이론에서 누군가가 무작위 40 자 문자열 또는 MD5 해시를 입력하고 다른 누군가를 얻을 수 있다고 생각합니다. 이것은 거의 불가능할 수 있지만 한 번만 발생하면됩니다.

더 나은 해결책은 사용자에게 토큰을 보낸 다음 이름, 우편 번호, ssn 또는 이들의 조합과 같은 세부 정보를 입력하도록 요청하는 것입니다.

+5

SSN? 진심이야? 어쨌든, 40 개의 임의의 문자열이 몇 개나 있는지에 대한 계산을하는 것이 좋습니다. 단지 "매우 희박한 것"이상일 것입니다. – Eli

+0

맞습니다. 이메일과 같이 url에 다른 매개 변수를 추가해야합니다 (a..z + A..Z + 0..9 = 62 자 및 62 자^40은 꽤 큰 숫자입니다.) – Flackou

+0

얘들 아, 62^40은 우주의 원자 수보다 상당히 많습니다. 말 그대로 의심 할 여지가 없습니다. – Eli

0

심각한 개인 정보 보호 문제가있는 상황에서는 충분히 안전하다고 생각하지 않습니다. URL을 (아마도 일반 텍스트로) 보내고 있다는 사실은 훨씬 약한 링크입니다. 그 후에 토큰에 대한 무차별 공격 (실제 인증 메커니즘의 구조가 결여 된)이 잘 구성된 사용자 이름과 암호 설정보다 더 취약 할 수 있습니다.

우연히 https 요청의 매개 변수에는 문제가 없습니다.

+0

당신은 무차별 공격의 위험에 대해 옳습니다. 나는 우리가 어떻게 이런 종류의 공격으로부터 봇을 막을 수 있는지 보지 못합니다. 반기문 총장은 충분한 보호 조치를 취하지 않을 것이라고 주장했다. 주제에 대한 아이디어가 있으십니까? – Flackou

+0

사실, 우리가 말하고있는 핵심 공간의 종류로, if (this_ip_number_has_requested_an_invalid_token_today()) sleep (5); load_simulation 스크립트에서 완벽하게 보호 될 것입니다. (속도 제한은 좋은 인증 메커니즘의 기능 중 하나입니다.) – chaos

+0

답장을 보내 주셔서 감사합니다. 그러나 동일한 봇이 IP 속도 제한으로 충분하지 않은 다양한 IP를 쉽게 사용할 수 있다고 생각했습니다. 내가 잘못? – Flackou

8

쿠키를 사용하고 싶습니다. 워크 플로는 다음과 같아야합니다.

  1. 사용자가 처음으로 사이트를 방문합니다.
  2. 사이트에서 쿠키를 설정합니다.
  3. 사용자가 데이터를 입력합니다. 데이터는 쿠키에 저장된 일부 키를 사용하여 DB에 저장됩니다.
  4. 사용자가 떠날 때 https : 링크가 포함 된 이메일을 보냅니다.
  5. 사용자가 다시 방문하면 사이트에서 쿠키를 발견하고 사용자에게 이전 데이터를 제공 할 수 있습니다.

이제 다른 컴퓨터에서 다른 브라우저를 사용하려고합니다. 이 경우 "전송"버튼을 제공하십시오. 사용자가이 버튼을 클릭하면 "토큰"을 받게됩니다. 다른 컴퓨터에서이 토큰을 사용하여 쿠키를 다시 설정할 수 있습니다. 이 방법으로 사용자는 토큰을 전송하려는 보안 수준을 결정합니다.

0

그렇다면 나쁜 생각입니다. 당신은 쉬운 사용법으로 보안을 희생시킬 것입니다. 전에 말했듯이 SSL은 서버와 클라이언트 브라우저 사이의 정보 전송만을 보호 할 것이고 중간 사람의 공격을 막을 것입니다. 이메일은 매우 위험하고 안전하지 않습니다.

정보에 액세스하려면 사용자 이름과 암호 인증이 가장 좋습니다.

나는 다소 쿠키 아이디어를 좋아합니다.쿠키 정보도 암호화해야합니다. 공격 확률을 제한하려면 salt 및 key phrase에 $ _SERVER [ 'HTTP_USER_AGENT']를 더한 토큰을 생성해야합니다. 확인 사용을 위해 쿠키에 클라이언트에 대한 많은 중요하지 않은 정보를 저장하십시오.

핵심 문구는 쉽게 사용에 대한 쿠키에 저장되지만 클라이언트는 또한에 저장되어 그가 제공하는 주요 문구를 입력 할 수도 쿠키를 도난 수 있습니다 마음 = (.

더 나은 유지 될 수있다

또는 $ _SERVER [ 'HTTP_USER_AGENT'] 매개 변수가 다른 다른 컴퓨터를 사용하거나 단순히 쿠키가 누락 된 경우 키를 사용할 수 있으므로 쿠키를 전송할 수 있습니다.

민감한 데이터가 데이터베이스에 암호화되어 있는지 확인하십시오. 알지 못합니다.)

관련 문제