2013-05-17 2 views
0

그래서 한 달 동안 내 ASP.Net MVC 4 응용 프로그램을 기꺼이 구축했습니다. 보안 모델을 제 위치에두고 사용자가 로그인하여 보안 정보가 후속 페이지 요청을 위해 사용자 세션에 저장되고 있습니다. 이 모든 것이 훌륭하게 작동합니다. 그런 다음 페이지에 추가 데이터를 얻기 위해 일부 아약스 호출을 구현합니다. 웹 API 인터페이스를 호출하여이 작업을 수행합니다. 웹 API 호출에서 Session 및 low 액세스를 시도하고 Session이 null입니다. 이제는 웹 API가 "상태 비 저장"이라고 가정합니다. 웹 API 호출에 대한 모든 매개 변수가 전달되어야합니다. 그러나 매개 변수 중 일부가 민감하고 ajax 호출을 할 때 클라이언트에서 전달할 수없는 경우 어떻게해야합니까?ASP.Net MVC 4, 웹 API 및 전달 매개 변수 안전하게

WebAPI의 세션에 액세스하기 위해 해킹에 대해 읽었습니다. 나는 이것을하지 않고 웹 API의 세입자를 위반하는 것을 선호합니다. ? 그래서이 정보를 데이터베이스에 저장하고 웹 API 호출에서 꺼내십니까? 그렇게하려면 PITA처럼 보입니다. 웹 API 아약스 호출을 할 때 특정 매개 변수를 안전하게 유지하는 방법은 무엇입니까? 아니면 세분화되어 세션에 액세스 할 수 있습니까?

답변

0

각 서비스 호출은 사용자 ID를 허용 할 수 있습니다.

WebAPI 컨트롤러 메서드는 사용자 ID를 사용하여 중요한 데이터 조회 (예 : 중요한 주문 세부 정보 조회)를 수행합니다.

0

방법 나는 그것이 기본 클래스에서 상속 할,이 기본 클래스는 다음과 같습니다 WebAPI이 사용자 이름과 각 사용자 이름을 볼 수 있습니다

public string UserName 
    { 
     get 
     { 
      return User.Identity.Name; 
     } 
} 

고유, 당신은 사용자 조회를 할 수 있도록 이 변수에 따라

WebAPI에 추가 데이터를 보내려면 컨트롤러에 ID를 보내고 UserName에 대해 유효성을 검사하여 액세스 권한이 있는지 확인해야합니다.

가짜 ...

나는 정책을 원한다!

클라이언트 측

이 ID보고 User.Identity.Name에 대해 검증
  • (그들은 그것에서 정보를 얻을 수없는 경우 해커에 의미가 WebAPI 1234)
    • 는 정책 ID를 보냅니다 정보를 검색 할 수 있다면
  • +0

    나는 당신이 말하는 것과 이해할 수없는 것을 사용하여 데이터베이스에 세션 데이터를 쓰고 웹에서 데이터를 꺼내는 추가 작업을 할 수 있다는 것을 이해합니다. 동일한 키를 사용하여 API 호출. 원하는 데이터가 이미 세션에있을 때 kill 이상인 것처럼 보입니다. 왜 데이터베이스에 대한 R/W가 상태를 유지하지만 세션에 대한 R/W가 아닌가? –

    +0

    잔인 함은 이미 db에서 사용할 수있는 데이터를 통과시킬 것입니다. 모든 메소드를 사용자 세션에 연결하려면 API 모델이 아닌 엔티티 프레임 워크를 사용하려면 – Eamon

    +0

    @MikeMurphy 확실히 데이터가 데이터베이스에 저장되고 응용 프로그램에서 보낸 ID로 액세스 할 수 있습니다 웹 API에 연결하여 API에서이 백업을 데이터베이스에서로드 할 수 있습니까? 어쨌든 세션에서 이처럼 큰 데이터를 보관하는 것은 끔찍한 습관입니다. –