问答

访问网站的ip到底能不能仿造?

作者:admin 2021-05-09 我要评论

RT。 若能仿造,请问如何仿造。 若不能仿造,请问原因(原理)是什么? 最近网站需要做一个安全验证,用ip地址来限制用户访问接口的次数,于是想到这个问题。 求...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

RT。
若能仿造,请问如何仿造。
若不能仿造,请问原因(原理)是什么?

最近网站需要做一个安全验证,用ip地址来限制用户访问接口的次数,于是想到这个问题。
求解答。

###

可以伪造.

一般请求经过代理或者 CDN 之后,代理服务器会把用户的 ip 放在 x-forwarded-for 这个http 头里,经过多级代理之后,这个字段里会有多个 IP. 这个头你可以用程序模拟自己发送,这样就导致了这个头实际上是不可信任的. 你也可以和 CDN 约定使用特殊的 http 头来返回用户IP.但由于这个头不可信,会导致 cdn 做出两种选择,一种是把这x-forwarded-for里的第一个 IP 作用用户的正式 IP 带给你,另一种就是完全不信任这个x-forwarded-for,直接把这个 tcp 连接的对端 IP 作为用户 IP 带给你,但实际上,他也不知道这个 tcp 连接的对端,到底是用户还是一个代理服务器.
如果使用 x-forwarded-for 你自己发送一个头就可以绕过了.如果是第二种,虽然无法伪造,但是可能因为对端是一个运营商代理导致你一下子拦截住了一堆人..

一般情况,开发接口不做限制,需要用户登录或者 oauth 认证的接口,直接对用户 id 或者 appid 做请求限制即可.限制 IP 问题太多,你只能取舍,要么信任 cdn取 cdn 带来的用户 IP,要么不信任 cdn,直接取 remote_addr

###

肯定可以,请求的时候设置代理Ip就可以了吧,设置后服务器能不能识别原始IP需要看代理IP的透明度,但现在很多代理商要添加白名单,所有从代理商是肯定可以看到的。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • grom设置json默认值

    grom设置json默认值

  • Vue路由报错,看着没问题

    Vue路由报错,看着没问题

  • 思否邮箱登录为什么区分大小写了呢?

    思否邮箱登录为什么区分大小写了呢?

  • 有没有能够直接上传markdown文件作为博

    有没有能够直接上传markdown文件作为博

腾讯云代理商
海外云服务器