2012-10-05 2 views
0

은 분명히 나는 ​​ 이메일에 비밀번호 변경 링크를 제공하는 가장 쉬운 방법은 무엇입니까?

example.net/[email protected] 

그래서 나는이 작업을 수행 할 수있는 방법

example.com/changepassword.aspx?email=fregrtgethytrhergerg 

을 필요로하는 링크가 포함 된 이메일을 제공 할 수 있습니까? 나는 암호화 키가 필요하다고 생각하니? 추가 데이터베이스 테이블을 만들지 않고도이 모든 작업을 수행 할 수 있습니까? 나는 보안에 대해 아무것도 모른다.

내가 원했던 것과 관련이있는 가장 유사한 설명은 How to Hash and Salt Passwords in ASP.NET에 대한 기사입니다.

+0

링크 샘플 당신이 (암호화되지 않음) _hash_ 줄 방법을 보여주는 데이터 (예 : 암호). – EdSF

+0

@ gabrjan : 디코딩 md5? 지금 농담하는 거지 ? – JYL

+0

aha .. 나는 해싱 대 암호화에 대해 혼란 스럽다고 생각한다. 나는 이것에 대해 연구해야한다. 나는 원문과 일부 왜곡 된 텍스트 사이를왔다 갔다 할 수있는 것처럼 간단하다고 생각했다. . – punkouter

답변

3

여기서는 사용자에게 이메일을 보내는 "비밀번호 분실 페이지 복구"를하고 싶다고 가정합니다. 사실입니까?

새 테이블을 만들고 싶지 않지만 기존 테이블에 새 열 (또는 두 개)을 만들면 괜찮습니까?

그렇다면 기존 테이블에 "guid"열과 다른 열 "guidExpirationDate"를 추가 할 수 있습니다.

사용자가 새 암호를 묻는 경우 테이블 (코드 : Guid.NewGuid())에 GUID를 만들고 DateTime.Now.AddMinutes(30)과 같이 만료 날짜를 설정하십시오.

링크에 이메일 주소 대신 Guid를 제공하십시오. 페이지가로드되면 보안상의 이유로 Guid가 만료되지 않았는지 확인하십시오.

여기서 암호화 할 필요가 없습니다.

+1

또한 보안상의 이유로 만료됩니다. 재설정 코드는 한 번만 사용할 수 있어야합니다. –

+0

외부 API에서 데이터를 가져오고 있습니다. 따라서 테이블을 만들 필요가 없습니다.하지만 코드를 암호화하는 키를 저장하면 상위 수준의 이해가됩니다. 암호화하여 사용합니다. 해독하고? 이렇게하면 새 테이블이 필요하지 않습니다. – punkouter

+0

@punkouter : 암호화 문제는 만료 지연이 없다는 것입니다. 암호화 된 메일로 링크를 생성하면이 링크를 항상 사용할 수 있습니다. 매우 안전하지는 않습니다. – JYL

1

GUID를 사용할 수있는 unquie 값이 포함 된 열 (VerificationCode)을 테이블에 추가 할 수 있습니다.

사용자가 변경된 암호를 요청하면, & 업데이 트를 생성 & URL에 같은를 사용하는 데이터베이스에 VerificationCode :

example.com/changepassword.aspx?verificationCode=yourUniqueKey 
+0

예 .. 그게 아닌 암호화 방법입니다. 내가 이해할 .. guid를 만드십시오. .. 사용자가 elink를 클릭 할 때 .. .. 그 테이블에있는 사용자 이메일로 GUID를 일치 시키십시오. 나는 그것을 할 수 있습니다. 게다가..난 그냥 암호화하고 해독하는 것이 더 쉬울 거라 생각 .. 어쩌면 아니야. – punkouter

관련 문제