C# 无浏览器或视图的mvc客户端访问
我有一个MVC4C#应用程序,我希望允许客户端通过代码(无浏览器或视图)进行访问。客户端将发送一个用于查找记录的用户ID,并返回三个字段。传入和传出数据都是敏感信息,因此我需要一个安全的解决方案。应用程序运行在一个带有SSL(https)的站点上,如果我使用JSON解决方案(如两个答案所示),这会保护我免受JSON劫持吗C# 无浏览器或视图的mvc客户端访问,c#,asp.net-mvc,web-services,asp.net-mvc-4,C#,Asp.net Mvc,Web Services,Asp.net Mvc 4,我有一个MVC4C#应用程序,我希望允许客户端通过代码(无浏览器或视图)进行访问。客户端将发送一个用于查找记录的用户ID,并返回三个字段。传入和传出数据都是敏感信息,因此我需要一个安全的解决方案。应用程序运行在一个带有SSL(https)的站点上,如果我使用JSON解决方案(如两个答案所示),这会保护我免受JSON劫持吗 public ActionResult InAction(string id) { // code to retrieve record and return three
public ActionResult InAction(string id)
{
// code to retrieve record and return three fields field1, field2, field3
return (what would go here?)
}
我甚至可以使用控制器操作来处理这个问题吗?我需要一个完整的Web服务来完成这项工作吗?如果需要的话,任何指向好的MVC教程的链接都会有帮助吗
客户机在ASP(webforms)中工作,并且正在讨论一个带有键值对的响应程序页面,我如何在MVC中进行等效操作
非常感谢您对我的帮助
多谢各位
更新:我已将Brett的JSON建议标记为答案。我返回一个字符串(不是数组),整个事务通过SSL连接进行,因此我相信JSON劫持的可能性不是问题
string response = field1 + "," + field2 + "," + field3;
return Json(response), JsonRequestBehavior.AllowGet; }
如果我错了,请告诉我。这取决于您希望返回数据的格式。例如,如果希望以JSON格式返回数据,可以使用以下命令:
return (Json(userResultModel));
您可能还希望将方法的返回类型更改为JsonResult。正如nikeaa所提到的,只需在控制器中创建一个返回JsonResult的操作即可
public JsonResult InAction(string id)
{
// get some object from repository
var repository = new ObjectRepository();
var returnObj = repository.GetObject(id);
return Json(returnObj, JsonRequestBehavior.AllowGet);
}
您需要指定jsonrequestbehavior.AllowGet来覆盖默认的.DenyGet。但是,当返回带有GET请求的JSON时,这会打开一个安全漏洞 谢谢你,布雷特。我应该提到运行应用程序的站点是https(ssl),我将返回敏感信息。因为我不能在JsonResult上使用[HttpPost],所以我必须使用.AlllowGet。我不同意你的意见,我应该使用它的安全原因,不是吗。AllowGet什么使它容易受到JSON劫持?该链接表示“您不希望在GET请求中使用JSON返回敏感信息。”我如何安全地将敏感信息返回给客户端?SSL会保护我免受JSON劫持吗?@Joe,我已经编辑了我的回复,我只是说你需要那个参数来覆盖默认行为。我不是专家,但我会尽量避免向客户端发送敏感数据,除非它们经过身份验证,我认为通过SSL更好。另外,为了避免JSON劫持,我认为一种方法是确保响应封装在对象中,而不是数组中。我觉得上面的措辞仍然让人困惑。我冒昧地编辑了你的回复,使之更清楚。谢谢你,我投了赞成票,但没有点击箭头。现在完成,再次感谢。您可能希望使用具有ws*协议的wcf服务来提供JSON数据。