2012-07-30 3 views
2

간단한 등록 양식을 만들고 누군가가 나에게 모범 사례 목록을 줄 수 있는지 알고 싶었습니다. 등록 양식 간에는 차이가있을 수 있지만 취약점과 관련하여주의해야 할 지침이나 사안이 다를 수 있음을 이해합니다. 내 데이터 액세스 계층은 Entity FrameWork와 linq를 사용하여 쿼리를 처리합니다. 내가 의미를 생각MVC3 등록 양식 모범 사례

사례 :

    모델이 비즈니스 오브젝트에 바인더 제본되어
  • 검증 양식
  • 서버 측 유효성 검사 및 클라이언트 측 유효성 검사 (가장 좋은 방법은 이러한 목표를 달성하기 위해 뭐죠?)
  • SQL 인젝션을 확인 하시겠습니까?

    • 이름
    • : 내 계정 관리자 객체 (? 어떤 가장이에 대한 사례)
    • 사용 종속성 주입

    내 등록 필드는 다음 될거야

  • 이메일 (@ gmail.com, @ yahoo.com, @ live.com과 같은 일부 사이트에서 이메일을 보내야하는 이메일이어야 함)
  • 학교
  • 비밀번호
  • 상태 (3 정도 옵션을 아래로 고정 드롭)

나 또한 정말 이메일 활성화 같이뿐만 아니라 사용자가 자신의 계정을하기 위해 자신의 이메일로 이동해야 할 곳 유효한.

답변

2
  • 보기 모델의 유효성을 검사하려면 System.ComponentModel.DataAnnotations 네임 스페이스를 사용하십시오.
  • 예, 서버와 클라이언트 측 검증을 할
  • 엔티티 프레임 워크는 이미 SQL 주입을 처리
  • 당신이 봇은 이메일에 대한 양식을 제출

스팸에 대해 걱정하는 경우 "보안 문자"를 사용하는 것을 고려 부분 :

과거에는 전자 메일을 임의 생성 문자열에 매핑하는 데이터베이스 테이블을 만들었습니다. 클라이언트가 그 링크를 따라, 당신은 그 요청을 처리하면 지금

mydomain/completeregistration/7593098573903 whatever

는, 완전한 자신의 등록을 표시 : 당신이 전체 등록 이메일을 보낼 때, 임의의 문자열 또는 GUID 또는 어떤 것을 사용하는 링크를 제공 데이터베이스에. (이 URL에 대한 후속 요청을 방지하는 효과가 있어야합니다.)

2

클라이언트 측과 서버 측 유효성 확인을 사용하십시오. 클라이언트 측 유효성 검사를 신뢰하지 마십시오.

DataAnnotations 및 jQuery validate pluggin을 사용하십시오. 클라이언트 측 유효성 검사 기능을 작성할 필요가 없습니다.MVC는 HTML 도우미 메서드를 사용하여 HTML 요소를 렌더링 할 때이를 수행합니다.

Entity Framwork는 매개 변수가있는 쿼리를 작성합니다. 따라서 SQL 인젝션에 대해 걱정할 필요가 없습니다. 그러나 Entity 프레임 워크를 사용하여 SQL 문/저장 프로 시저를 수동으로 실행하는 경우 매개 변수화하는 것은 사용자의 책임입니다.