You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Angular 2/4:使用带参数Http Get调用Web API是否安全?含密码场景对比Post

嘿,我来帮你把这两个关于Angular调用Web API的安全问题讲清楚:

问题1:Angular 2/4中调用Web API时,使用带参数的Http.Get是否安全?

首先得明确一个核心点:HTTP Get的安全性和Angular框架本身关系不大,关键看你传递的参数类型和传输协议

如果是像你示例里这种获取业务统计数据的场景(比如获取地址数量),用Get是完全没问题的,但要注意这些细节:

  • Get请求的参数会直接暴露在URL里,会被浏览器历史记录、服务器日志、代理服务器日志留存下来,所以绝对不能用来传递敏感信息(比如密码、用户隐私数据)
  • 只要你是通过HTTPS协议传输(这现在是Web应用的标配了),整个请求的内容包括URL参数都会被加密,不会在传输过程中被窃听
  • 不管是前端还是后端,都要对参数做合法性校验,比如后端要使用参数化查询防止SQL注入,避免恶意参数带来的安全风险

你给出的Get示例代码是这样的:

http.get(baseUrl + 'api/GetAddressCount')
  .subscribe(res => this.AddressCount = res.json() as Number);

这个场景完全符合Get请求“获取资源”的语义,也没有敏感参数,用Get是合理且安全的。

问题2:在Angular中调用Web API时,通过Http Get传递密码是否安全?还是使用Http Post更安全?

结论非常明确:绝对不要用Get传递密码这类敏感信息,一定要用Post!

原因很直观:

  • Get的参数会直接显示在URL地址栏里,还会被浏览器历史、服务器访问日志、代理日志等多处留存,一旦泄露后果不堪设想
  • 就算用了HTTPS,虽然传输过程中内容是加密的,但URL中的参数依然会在客户端和服务器的一些环节被记录下来,风险依然很高
  • Post请求的参数是放在请求体中的,配合HTTPS传输的话,不仅传输过程加密,还不会暴露在URL和各类公开日志里,安全性提升不止一个档次

另外补充一点:不管用Get还是Post,一定要确保用HTTPS协议,HTTP明文传输下任何请求都没有安全性可言。

内容的提问来源于stack exchange,提问作者user1034912

火山引擎 最新活动