2009-11-12 3 views
4

ASP.NET MVC에서 여러 사용자 계정이 있고 각 항목에 많은 일반 CRUD 응용 프로그램이 있습니다. 사용자가 항목을 편집 할 때 ASP.NET MVC에서 URL의 ID 보호

, 그들은 숫자가 데이터베이스에서 행의 ID를 나타내는 URL과 같은 /편집/5에 그 일을 할 것입니다.

한 명의 사용자에 대해 다른 사용자의 ID로 ID를 변경하고 변경할 수 있다는 것에 대한 우려가 있습니다. ID를 보호하기 위해 다음과 같은 솔루션은 나에게 발생 :

  1. 암호화는 그렇게 쉽게 변경할 수 없습니다 -하지만 물론 나는 그것을 다시 게시 할 때마다 암호를 해독하는 코드를 가지고있다.
  2. GUID가 ID 옆에도 생성되어 URL에서 사용되도록 데이터베이스 스키마를 변경하십시오.
  3. 쿼리의 모습 있도록 항목에 대한 쿼리에서 사용자의 사용자 ID 로그인 그대로 읽을 수있는 ID를두고 다음과 같습니다

    database.Items.SingleOrDefault (C => c.UserID == [현재 로그인 사용자 ID] & & c.ID == itemID);

아마도 더 좋은 방법이나 생각하지 못한 방법이 있습니다. 이 문제를 방지하기 위해 선호하는 방법은 무엇입니까?

답변

9

확실히 세 번째 해결 방법입니다. 로그인 된 사용자 ID가 쿠키 (cf. FormsAuthentication)를 가져 와서 SQL 쿼리에 사용하여 해당 항목이 사용자에게 속하는지 확인하십시오.

+2

동의합니다. 사용자가 해당 항목을 편집 할 권한이 있는지 확인해야합니다. – pattersonc

5

사용자 입력을 신뢰하지 말고 항상 액세스 권한이 있는지 확인하십시오.

0

세션 컬렉션에 UserID를 저장하십시오.