2013-05-17 70 views
0

所以我一直很高興地構建我的ASP.Net MVC 4應用程序一個月。我有適當的安全模型,用戶可以登錄,並且安全信息正在存儲在用戶會話中以供後續頁面請求使用。這一切都很好。然後我實現一些Ajax調用來獲取更多數據到頁面中。我通過調用Web API接口來完成此操作。在Web API調用中,我嘗試訪問Session並查看Session的值爲null。現在我知道Web API應該是「無狀態的」。應該傳入一個web api調用的所有參數。但是,如果這些參數中的某些參數很敏感,並且在進行ajax調用時無法從客戶端傳遞出去呢?ASP.Net MVC 4,Web API和傳遞參數安全地

我讀過關於黑客訪問WebAPI中的會話。我寧願不這樣做,並違反web api的租戶。 ? 那麼你是否將這些信息存儲在數據庫中並在web api調用中將其取出?看起來像一個PITA來做到這一點。 那麼如何保持某些參數在進行web api ajax調用時的安全? 還是你打破了,只是獲得會議?

回答

0

每個服務調用都可以接受用戶標識。

WebAPI控制器方法使用用戶標識進行更多數據查找,例如查找敏感訂單詳細信息。

0

的方式我這樣做是從基類繼承,而這個基類有以下幾點:

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

的的WebAPI可以看到該用戶和每個用戶名是唯一的,所以你可以做一個用戶查找基於這個變量。

如果你想發送任何進一步的數據到WebAPI,那麼你將不得不向控制器發送一個ID,並根據UserName驗證它是否有權訪問它。

Psuedo ...

我想要一個政策!

客戶端

  • 發送策略ID(1234的WebAPI,毫無意義的黑客,如果他們不能從中得到的信息)
  • 這個ID對 User.Identity.Name驗證看如果可以檢索信息
+0

我明白你在說什麼,可以用一堆額外的工作來完成,首先使用一個不折不扣的密鑰將會話數據寫入數據庫,然後將數據拉回到Web中使用相同的密鑰進行api調用。當我想要的數據已經在會話中時,看起來好像過度殺人。爲什麼數據庫的R/W使其無狀態,但是會話的R/W不是? –

+0

矯枉過正會通過數據庫中已有的數據傳遞數據。一個API必須是無狀態的,如果你想要所有的方法耦合到一個用戶會話,然後使用實體框架而不是API模型 – Eamon

+0

@MikeMurphy當然你的數據保存在數據庫中,並且可以通過應用程序發送的ID進行訪問到Web API,所以你可以從你的API的數據庫中加載這個備份?無論如何,在Session中保存這些數據是非常糟糕的做法。 –