2013-05-17 40 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中保存这些数据是非常糟糕的做法。 –