2010-05-29 5 views
0

내 사이트는 asp.net 3.5 및 C#입니다. 내 사용자에게 메일을 통해 링크를 보내고 있습니다. 이제 각 사용자에게 특정 URL을 보내려고합니다. 따라서 일반 텍스트를 보내는 대신 암호화 된 문자열 URL로 링크를 보내려고합니다.이 URL은 홈 페이지에서 해독합니다. www.mysite.aspx\mypage?userId=12 대신 www.mysite.aspx\mypage?UserId=)@kasd12 을 보내고 내 페이지에서 암호 해독하여 userId = 12을 얻습니다.asp.net의 URL 암호화

내 접근 방식이 맞는지 아닌지 알려주세요. &을 암호화하는 방법이 가장 쉽고 간단합니다.

+1

[C#의 간단한 2 방향 암호화] (http : //stackoverflow.com/questions/165808/simple-2-way-encryption-for-c) 또는 [Encrypt/Decrypt string in .NET] (http://stackoverflow.com/questions/165808/simple-2- way-encryption-for-c) –

+0

@ Jørn 감사합니다. GUID를 사용하기 위해 제안을 삭제했습니다. 이 스레드는 clincher했다! http://stackoverflow.com/questions/643445/how-easily-can-you-guess-a-guid-that-might-be-generated –

답변

1

암호화/암호 해독 대신 임의의 문자열 값 생성 :) 그리고 적어도 6 또는 7 자 길이로 만듭니다. 값을 데이터베이스에 저장하고 쿼리 문자열을 통해 값을 받으면 SQL 쿼리를 실행하여 해당 행에 대한 작업을 수행합니다.

Page_Load() 

string x = Request.QueryString["UserID"]; 

SqlCommand x = new SqlCommand("UPDATE UserTable SET UserStatus='Activated' WHERE RandomKey='x'", connection); 
+0

6 또는 7 자의 문자열 대신 Guid를 사용하십시오. –

+0

@ 벤 - 나는 똑같은 밝은 생각을 가지고있어서 그것이 너무 밝지 않다는 것을 발견했습니다! http://stackoverflow.com/questions/643445/how-easily-can-you-guess-a-guid-that-might-be-generated –

+1

guids가 암호로 그래픽으로 보호되지 않는다고해서 이것이 적합하지 않음을 의미하지는 않습니다. 목적. 수백만 개의 유추 할 수있는 guids를 생성하여 데이터를 해독 할 수 있으므로 암호화 키로 사용할 수 없습니다. 이 atack은 짧은 시간 안에 수백만 개의 http 요청을 만들어야하므로 쿼리 문자열의 맥락에서 실현 가능하지 않습니다. –

2

임시 액세스 키를 생성하는 것이 더 적절하지 않습니까?

+1

명성 점수가 50 점을 넘으면이 종류의 소식을 올릴 수 있어야합니다. - 무언가 답이 아닌 질문에 대한 답으로 질문을 올려주세요 :) –

+1

@ Jørn 나는 그것이 유효한 대답이라고 말하고 싶습니다. 영업 담당자는 "내 접근 방식이 올바른지 알려주십시오." –

+2

"내 접근 방식이 정확한지 알려주십시오"에 대한 대답입니다. 나는 그가 "추측하기 힘든"고유 한 액세스 코드를 생성하는보다 일반적인 접근 방법을 사용해야한다고 말하지 않고 있으며, 나는 그가 정말로 원하는 바를 생각하게하려고 노력하고있다. 항상 나쁜 것 btw :) –

1

나는이 code project 페이지가 너의 뒤에 무엇인지 확신한다. 기본적으로 쿼리 문자열을 암호화하는 데 사용할 수있는 HttpModule입니다.

관련 문제