繁体   English   中英

如何在从javascript传递到web api 2时隐藏或保护令牌

[英]how to hide or secure the token when passing from javascript to web api 2

我在UI站点/项目和Web API 2以及其他站点/项目上使用javascript(angularjs)

UI项目:localhost / 12345
Web API:localhost / 98777

UI项目正在调用Web API(C#)项目,将令牌从UI传递到WebAPI以获取CRUD请求。

我在ServerSide项目中生成了令牌 - WEB API2(localhost / 98777),1-用户名/密码2-然后是url localhost:/ 98777 / Token ,传递用户名+密码+令牌

以这种方式,如果你在fiddler中调用它,它会返回一个令牌:content-type:application / x-www-form-urlencoded。 像这样生成令牌并将其写入localDB,稍后可以在您的UI应用程序中使用此生成的令牌,使用javascript(ajax / angular)调用传递给WebAPI项目。

我已经实现了在我的客户端站点中调用GET / POST / PUT方法的承载令牌。

localhost/12345 defined in Client site to get employee records via token:
----------------------------------------------
method: 'GET'
contenttype: 'application/json, charset=utf-8',
authorization: "Bearer 040jdU6ry....."
url: localhost/98777/api/employees/

这将返回所有员工的数据...它的工作原理。

localhost/98777 defined in server site web.config:
---------------------------------
<httpProtocol>
 <customHEaders>
   <remove name="Access-Control-Allow-Origin" />
   <add name="Access-Control-Alllow-Origin" value ="*"/>
 <customHeaders>
</httpProtocol>

问题? 问题是人们可以在IE / Chrome / FF中执行并打开开发人员工具,并查看javascript的来源并查看令牌。 然后在Fiddler / composer中执行代码并添加记录:(。

那么为什么我需要一个令牌呢?

有人可以建议我错过哪一部分吗? 人们可以看到令牌是正常的吗?

此应用程序将在Intranet中使用并由开发人员使用,因此我需要最大限度地保护它...

人们可以看到令牌是正常的吗?

是的,这是正常的。 据我所知,令牌只包含身份信息,以及客户端无法修改的一些声明。 这是唯一值得信赖的东西:身份。

在服务器端,您必须检查(角色/权限/业务规则)与令牌身份对应的用户是否有权执行请求的操作。

永远不要依赖客户端UI的业务规则实施。 始终仔细检查服务器端,您将是安全的。

您可以考虑以下步骤,

  1. 有公钥
  2. 使用时间戳加密密钥
  3. 使用标题中的时间戳发送加密密钥
  4. 使用相同的时间戳加密API中的密钥
  5. 比较两个键。
  6. 使用系统时间检查时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM