• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

get – php怎么判断是来自什么地方的请求

php 搞代码 3年前 (2022-01-25) 17次浏览 已收录 0个评论
文章目录[隐藏]

比如A站点向B站点发起GET请求,我怎么判断这个请求是不是A站点来的?
目前我知道的有$_SERVER[‘HTTP_REFERER’]
但是$_SERVER[‘HTTP_REFERER’]是可以伪造的,请求更好的解决方法

回复内容:

比如A站点向B站点发起GET请求,我怎么判断这个请求是不是A站点来的?
目前我知道的有$_SERVER[‘HTTP_REFERER’]
但是$_SERVER[‘HTTP_REFERER’]是可以伪造的,请求更好的解决方法

如果只有 B 站在自己的控制范围内 … 那么没有更好的办法 …

HTTP_REFERER 是 HTTP 协议里面唯一用来标识用户来源的字段 …

不过如果 A 站也在你的控制范围内 … 你可以做一个协议来确认这个请求真的来自 A 站 …

比如在每个 A本文来源gao.dai.ma.com搞@代*码#网搞代gaodaima码 站给 B 站的请求上传递两个参数 … 一个叫做 t 一个叫做 f

如果你收到的 $_GET['f'] 等于 md5( $_GET['t'] . 'secret_key' ) 的话就视为合法 …

继续按照原来的逻辑处理这个请求 … 否则直接将之丢弃掉 …

如果不想加入两个参数 … 也可以用一些 A 站可以获取的内容来作为 t 参与计算 …

这是比较稳妥的两个站点之间标记身份的方法 … 俗称指纹或者签名 …

上面描述的一次盐化散列算法是比较简单的 …

如果你需要安全性更高的传递 … 也可以使用 RSA 一类更高强度的算法 …

另外还有一种方法 … 也需要 A 站在你的控制范围内 …

比如目标链接是 http://B.ext/somelink … 需要转换成 http://A.ext/go/somelink

然后在 A 站的后台处理这样链接的时候给 B 站的某个限定来源 IP 的地址发一条消息 …

消息内容就是用户的 IP 浏览器和欲访问的地址 …

然后 B 站如果紧跟着接到了这样的访问就视为是合法的 … 否则丢弃 …

恩恩基本就是这样啦 …

在服务端目前是没有更好的方法了,因为HTTP头部就那么点内容,很简单,只有这个字段是用来标记链接来源的。

A站发送和B站接收时:
1,先用一个字符串作为密钥$key = ‘alsfjewoi212’;分别放到A站与B站。
2,再把A站要GET的数据$data与密钥相连并将md5值赋给$x = md5($data.$key);
3,将$x与$data同时get到B站。

4,B站接收时判断:
if($_GET[‘x’]!== md5($_GET[‘data’].$key)) exit();

done.


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:get – php怎么判断是来自什么地方的请求

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址