2009-09-06 1 views
3

현재 ASP.NET MVC에서 ADO.NET Entity Framework를 사용하여 매우 작고 간단한 웹 응용 프로그램을 작성하고 있습니다. 숨겨진 필드로 html 내부에 고유 ID (기본 키)를 포함시켜야하는 데이터베이스에서 하나의 레코드를 편집하는 벽을 쳤습니다. 이 질문은 제가 여기에서 묻는 질문에 기초하여 One Possible Solution이었습니다.웹 페이지의 숨겨진 필드에 따라 DB 레코드를 편집하는 보안 위험은 무엇입니까?

이 테이블의 다른 레코드를 편집하는 다른 사람들을 위해 내 데이터베이스가 열릴 수 있습니다.

MVC는 내부적으로이 보안 위험을 처리합니까?

답변

1

사용하는 서버 측 기술에 관계없이 클라이언트 쪽에서 ID를 잘못 조작 할 수 있습니다. 다른 사람들이 제안한 것처럼 어떤 형태의 인증/권한 부여 체계는 사용자 행동에 앞서 특권을 확인하는 데 사용될 수 있습니다.

동작을 사용하기 위해 ID를 서버로 전달하지 않으면 사용자 동작을 서버 코드에 연결할 수 없습니다.

0

숨겨진 필드는 종종 편집을위한 ID를 포함하는 데 사용됩니다. 게시물이 서버 측에서 수신되면 사용자가 해당 행을 편집 할 수 있는지 확인하십시오.

-1

숨겨진 필드 후에 MVC 프레임 워크가 정리되지 않습니다. 귀하의 ID는 링크 삭제와 같은 일을하는 큰 위험이 아닙니다.

계속 진행됩니다.

친절,

1

아니, 그건 당신이 알아서 할 일이다. 당신이 사용자의 권한을 확인하지만이 정말 "secruity"문제가되지 않습니다

그가보기
  • 와 DB 업데이트하기 전에
  • A "해커를 호출 처음보기 전에

    • "숨겨진 필드"id of X "를 여전히"id of Y "로 편집 할 수 있습니다. 수표는 "Y"를 편집 할 수없는 경우이를 금지해야합니다. 그가 처음에 Y를 편집 할 수 있다면 그는 "나는 Y에 대한 전망을 사용하여 X를 변경했다 - 나는 X에 대해서도 볼 수 있었지만 그렇게 할 수있다"고 주장 할 수있다.

    1

    다른 사람들이 말했듯이, 항목 ID 자체는 보안 상 위험하지 않습니다.

    그러나 명시된대로 질문에 대답하기 위해 숨겨진 필드는 보이는 것과 동일한 보안 위험이 있습니다.

    1

    웹 양식에서 나는 당신과 같은 생각을하고있었습니다. 편집 및 삭제를 확인하기 위해 항상 일부 서버 측 코드를 빌드해야합니다. 내가 가진 문제는 사용자가 소스 코드를 변경하여 다른 사용자의 항목을 삭제할 수 있다는 것입니다. 그것을 방지하기 위해 사용자가 속한 항목을 삭제했는지 확인해야했습니다.

    0

    내 제안은 레코드의 고유 한 32 비트 고유 식별 번호 인 use uid입니다. 사용자가 숨겨진 필드에서 uuid를 볼 수 있기 때문에 데이터베이스가 보호됩니다. 그는 유일하고 무작위이기 때문에 그 테이블의 다른 이드를 추측 할 수 없다.

    관련 문제