关于防止WebAPi被第三方网站盗用

Adol1111 2014-09-22 04:26:34
我现在想用WebAPI建立一套自己的数据接口,给自己的其他站点调用,但是如何防止别人来盗用(CSRF攻击什么的)。比如别人仿造了一个网站,然后调用的接口全是我的接口的情况。

我目前想的方法是这样的:
1、B站点向A站点(webAPI接口)发起一个请求
2、A站验证B站是否可信(如何验证?)
3、如果可信,则A站给B站发送一个token
4、B站点每次发送请求,都必须带着这个token
5、A站的所有接口多必须验证这个token是否有效,然后再做相应处理。

关键是如何验证B是否可信。我这里准备利用Html5的CORS特性,不知道能否拒绝第三方请求?有没有什么可靠的办法?
...全文
665 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hairenaa 2021-07-13
  • 打赏
  • 举报
回复

目前jwt生成token是很有效的

Adol1111 2014-09-24
  • 打赏
  • 举报
回复
谢谢各位,我先用oAuth实现试试看吧
  • 打赏
  • 举报
回复
引用 10 楼 Adol1111 的回复:
[quote=引用 8 楼 starfd 的回复:] 一个是OAuth,还有一种是抄袭支付宝什么的签名验证
有没有什么oAuth开源实现、实例之类的 还有支付宝的签名验证是什么?[/quote] 就是把合作号和要传递的键值对排序后,组织成get一个字符串,在末尾加上密码,进行Md5摘要,并把生成的摘要加入键值对传递,服务端对收到的数据还原签名过程,比较两者是否一致,一致就认为是正确的请求
Adol1111 2014-09-23
  • 打赏
  • 举报
回复
引用 8 楼 starfd 的回复:
一个是OAuth,还有一种是抄袭支付宝什么的签名验证
有没有什么oAuth开源实现、实例之类的 还有支付宝的签名验证是什么?
Adol1111 2014-09-23
  • 打赏
  • 举报
回复
引用 8 楼 starfd 的回复:
一个是OAuth,还有一种是抄袭支付宝什么的签名验证
引用 4 楼 xdashewan 的回复:
[quote=引用 2 楼 Adol1111 的回复:] 能否简单介绍下,我对这方面不是很懂,听说要实现一个oAuth好像挺麻烦的。
简单的说就是用户在你平台申请API Key,然后使用API Key发送指定请求协议到你规定的网址进行用户登录,如果登录成功则返回你之前协议指定页面同时获得access_token,之后便可以通过access_token代替用户名和密码来访问api接口了,不过注意access_token有有效期,有效期过了需要通过refresh_token或者重新登陆再一次获取access_token,当然我说的是大概的使用流程,服务端你得自己去看oAuth官网。[/quote] 好吧 我先试试看
  • 打赏
  • 举报
回复
一个是OAuth,还有一种是抄袭支付宝什么的签名验证
  • 打赏
  • 举报
回复
判断是否是B网站的IP 可以吗?
正宗熊猫哥 2014-09-23
  • 打赏
  • 举报
回复
你的API不公开的话,自己写个加密算法
qzyf1992 2014-09-23
  • 打赏
  • 举报
回复
或者你提供一个访问该资源的授权页面一旦用户第一次访问该资源导向那个授权页面,用户需要提供一个授权码才可以访问。然后将这个授权码以cookie的形式保存,当然也可以是账号密码(对应授权码),下次访问该资源自然回带上这个授权码的cookie(要加密)服务端那边解密与数据库中的授权码库对比相同允许访问
qzyf1992 2014-09-23
  • 打赏
  • 举报
回复
设置个调用密码不就得了,将调用密码以参数的形式传过去,如果密码不正确不允许调用该服务
  • 打赏
  • 举报
回复
引用 10 楼 Adol1111 的回复:
[quote=引用 8 楼 starfd 的回复:] 一个是OAuth,还有一种是抄袭支付宝什么的签名验证
有没有什么oAuth开源实现、实例之类的 还有支付宝的签名验证是什么?[/quote] 正好做过支付宝的。。。 a.接收支付宝传入的参数,并组装 b.根据相同的规则, 用这些参数构造一个新的sign, 看是否和传入的sign参数相等 c.访问支付宝的一个接口,看这条信息是否是支付宝发送的(有一个消息id可以判断支付宝是否传过) d.以上2点都满足则验证通过
骑猪看海 2014-09-23
  • 打赏
  • 举报
回复
首先在API站点建立个白名单,根据对方请求过来的域名,判断是否存在白名单里,同时在判断对方带过来的token是否过期(这里的token自己随意组合吧,如:域名+过期时间,记得加密)。如果判断域名不在你的白名单里或如token无效,则不是你授权的网站访问,直接拒绝。如token过期,提交重新登陆,如token有效,进行相应操作即可
三楼の郎 2014-09-23
  • 打赏
  • 举报
回复
A设置IP白名单,拒绝名单之外的请求
xdashewan 2014-09-22
  • 打赏
  • 举报
回复
引用 2 楼 Adol1111 的回复:
能否简单介绍下,我对这方面不是很懂,听说要实现一个oAuth好像挺麻烦的。
简单的说就是用户在你平台申请API Key,然后使用API Key发送指定请求协议到你规定的网址进行用户登录,如果登录成功则返回你之前协议指定页面同时获得access_token,之后便可以通过access_token代替用户名和密码来访问api接口了,不过注意access_token有有效期,有效期过了需要通过refresh_token或者重新登陆再一次获取access_token,当然我说的是大概的使用流程,服务端你得自己去看oAuth官网。
於黾 2014-09-22
  • 打赏
  • 举报
回复
想安全,怕麻烦怎么行 不麻烦的方案,盗用起来也不麻烦.
Adol1111 2014-09-22
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
关于验证去看下oAuth协议,各大网站提供api比较主流的验证方式
能否简单介绍下,我对这方面不是很懂,听说要实现一个oAuth好像挺麻烦的。
xdashewan 2014-09-22
  • 打赏
  • 举报
回复
关于验证去看下oAuth协议,各大网站提供api比较主流的验证方式

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧