2012-08-15 2 views
0

내가 효율적으로 뉴스 기사가있는 닷넷 앱 중 일부는 공개적으로 사용할 수 있으며, 그 중 일부는 사용자가 로그인 한 경우에만 사용할 수있는 건물입니다.는 쿼리 문자열에서 ID를 암호화 전달

의 URL을 각 기사는 어떤 식 으로든 기사의 ID를 포함해야하며 지금까지 AES를 사용하여 사용자 ID를 '공유 된 비밀'로 사용하고 8 자리 문자열을 소금으로 사용하여 기사 ID를 암호화했습니다.

/article.aspx?id=EvEAAAACtp2iEc7lKyJSu6382Ryl4k571L5/PQrJYY1JJfeq4F 문제는 사용자가있는 동안은 로그인 한 기사를 볼 경우, 그들은 URL을 복사하여 다른 사람에게 그것을 보낼 수 없음을있는 그대로 그것은하지 않습니다 다른 사용자의 ID 또는 로그인하지 않은 사용자와 작업하십시오.

알려진/알 수없는 사용자가 공유해야하는 경우 쿼리 문자열 (또는 그 밖의 다른 곳)에 ID를 포함하는 올바른 방법은 무엇입니까?

감사합니다.

+0

왜 기사 ID를 암호화해야합니까? 나는 사용자가 세션이나 비슷한 것을 통해 로그인했는지 여부를 추적한다고 가정합니다. 사용자가 서버 측 기사에 액세스 할 수 있는지 여부를 확인하고 URL에 기사의 일반 ID를 사용하십시오. –

+0

일반 아티클 ID 대신 암호화 된 아티클 ID를 표준 액세스 제어 메커니즘 (사용자가 로그인하고보기 권한이 있는지 확인)과 함께 사용해야하는 구체적인 이유가 있습니까? – Robert

답변

0

이렇게하는 일반적인 방법은 누군가가 이메일로 보낼 수있는 링크를 생성하는 "링크"또는 "공유"버튼을 사용하는 것입니다.

1

id를 쿼리 문자열에 전달하고 클라이언트가 해당 아티클을 읽고 적절한 응답을하기에 충분한 자격 증명이 있는지 웹 서버에 확인하도록하는 것이 안전하지 않습니까? 관련 HTTP 상태 코드 (401)를 반환하여 로그인해야 함을 나타내거나 403을 표시하면 사용자가 볼 수 없음을 나타낼 수 있습니다.

+0

이것은 개방 된 상태에서 데이터베이스 ID를 노출하는 것과 관련하여 일반적인 문제 일 뿐이라고 생각합니다. 이는 매우 위험합니다. 사이트가 해킹당한 경우. 이것이 최선의 방법이라고 생각 했나요? – Fijjit

+1

이 사이트는 각 질문 (및 답변 및 사용자)에 대한 ID를 제공합니다. –

관련 문제