首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP referrer:如何确保请求实际来自它应该来自哪里

在PHP中,您可以使用$_SERVER['HTTP_REFERER']变量来检查请求的来源。然而,这种方法并不是100%可靠的,因为HTTP_REFERER可以很容易地被伪造或删除。但是,在大多数情况下,它足够用于验证请求的来源。

以下是一个简单的示例,演示如何检查请求是否来自预期的来源:

代码语言:php
复制
<?php
$allowed_referrers = array(
    'http://example.com',
    'http://example2.com'
);

if (isset($_SERVER['HTTP_REFERER']) && in_array($_SERVER['HTTP_REFERER'], $allowed_referrers)) {
    // 请求来自允许的来源,处理请求
} else {
    // 请求不是来自允许的来源,拒绝请求
    header('HTTP/1.1 403 Forbidden');
    echo 'This request is not allowed.';
}
?>

在这个示例中,我们首先定义了一个允许的来源数组$allowed_referrers,然后检查$_SERVER['HTTP_REFERER']是否设置并且是否在允许的来源数组中。如果是,我们处理请求;否则,我们返回一个403禁止访问的响应。

请注意,这种方法并不是绝对安全的,因为HTTP_REFERER可以很容易地被伪造。在处理敏感数据时,您可能需要使用其他方法来验证请求的来源,例如使用数字签名或OAuth。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

学习 HTTP Referer

HTTP Referer 是 HTTP 表头的一个字段,用来表示当前网页是来源于哪里,采用的格式是 URL。我们通过这个 HTTP Referer,可以查到访客的来源。...有同学可能会注意到 Referer “似乎”拼写有误,应该是 “Referrer" 才对,这其实是个历史原因,在早期 HTTP 规范当中就存在的拼写错误,后面为了向下兼容,所以将错就错。.../live" referrerpolicy="no-referrer">查看链接 到此大家应该对 Referer 有了一个大概的了解,那么 Referer 字段在什么条件下会展示,以及如何去控制...工作中实际使用的场景: 在双品牌“乐彩云”推广中为降低双域名跳转改造成本,运维层面在 Nginx 添加了一个规则,若访问链接(例如 news.zcygov.cn)的 Referer 包含 lecaiyun.com...图片来自[阿里云CDN的防盗链配置] https://help.aliyun.com/document_detail/27134.html (2)埋点分析 埋点分析有一种情况是用于追溯用户的完整访问路径

1.6K30

HTTP Referer 教程

HTTP 请求的头信息里面,Referer 是一个常见字段,提供访问来源的信息。 很多开发者知道这个字段,但是说不清的具体细节。本文详细介绍该字段。...一、Referer 的含义 现实生活中,购买服务或加入会员的时候,往往要求提供信息:"你从哪里知道了我们?" ? 这叫做引荐人(referrer),谁引荐了你?对于公司来说,这是很有用的信息。...三、Referer 的作用 Referer字段实际上告诉了服务器,用户在访问当前资源之前的位置。这往往可以用来用户跟踪。...的实现就是基于Referer字段,如果该字段的网址是自家网址,就放行。 由于涉及隐私,很多时候不适合发送Referer字段。 这里举两个例子,都不适合暴露 URL。...Example.com 上面网址中,先跳转到/exit.php,然后再跳转到目标网址。

2.5K40
  • JS 中的网络请求 AJAX, Fetch, WebSocket

    监听readyState属性的变化,而一共有 5 个值。 0 表示 请求还未初始化,尚未调用 open() 方法。 1 表示 已建立服务器链接,open() 方法已经被调用。...在请求之前和 XMLHttpRequest 出错时它为0。 responseText 属性是实际的数据,它是字符串,如果相应是 JSON 格式,需要用 JSON 的 parse 处理。...lengthComputable 布尔值 表示进度信息是否可用 position 已经接收到的字节数 totalSize 根据Content-Length预期的字节数 跨域 同源策略限制了从同一个源加载的文档或脚本如何来自另一个源的资源进行交互...referrer: 'no-referrer', // no-referrer、client或一个 URL。默认是 client。...Response 实现了 Body(代表响应/请求的正文,允许你声明其内容类型是什么以及应该如何处理。) 它有 9 个属性。

    4.1K30

    内容安全策略( CSP )

    网站也可以使用 Strict-Transport-Security HTTP头部确保连接的浏览器只使用加密通道。...比如一个可以上传文件和显示图片页面,应该允许图片来自任何地方,但限制表单的action属性只可以赋值为指定的端点。一个经过恰当设计的内容安全策略应该可以有效的保护页面免受跨站脚本攻击。...可运行脚本仅允许来自于userscripts.example.com。 示例 4 一个线上银行网站的管理者想要确保网站的所有内容都要通过SSL方式获取,以避免攻击者窃听用户发出的请求。...此外,一个报告模式的头部可以用来测试一个修订后的未来将应用的策略而不用实际部署。...使用如下策略,该策略禁止任何资源的加载,除了来自cdn.example.com的样式表。

    3.2K31

    HTTP-REFERER伪造方法

    什么是HTTP Referer 简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理...Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。...答案是否定的,因为Gregarius只是负责输出html代码,而对图像的访问是有客户端浏览器向服务器请求的。...实现一般都是通过apache的配置文件,首先设置允许访问的地址,标记下来: # 只允许来自domain.com的访问,图片可能就放置在domain.com网站的页面上 SetEnvIfNoCase Referer...个人感觉现在Rerferer除了用在防盗链,其他用途最多的就是访问统计,比如统计用户都是从哪里的链接访问过来的等等。 ?

    4.8K40

    Spring Security 之防漏洞攻击

    Cookie,否则HTTP请求将不包含该Cookie Lax:当请求来自同一站点,或者请求来自top-level navigations(❓不太理解)并且请求是幂等时,将包含该Cookie,否则不包含该...CSRF注意事项 登录 为了防止伪造登录请求,登录HTTP请求应该被保护免受CSRF攻击。防止伪造登录请求,以便恶意用户无法读取受害者的敏感信息。...文件上传 保护multipart请求(文件上传)免受CSRF攻击会导致鸡和蛋的问题。为了防止发生CSRF攻击,必须读取HTTP请求的主体以获取实际的CSRF令牌。...对于给multipart/form-data请求进行CSRF保护,有两种办法: 在Body中放置CSRF令牌 在请求主体中包含实际的CSRF令牌。...Spring Security的方法是使用Referrer Policy头,提供不同的策略: Example 8.

    2.3K20

    WEB安全防护相关响应头(下)

    下文中,我们则侧重介绍一些和跨站安全相关的响应头—— 一、Referrer-Policy -- 不要问我从哪里来 “互联网”这个词,顾名思义,“互联”才有意义。...[▲图1.一些做得好的 会和主页面融为一体,如右侧] 在 HTTP 协议里,如果【A资源】发起了对【B资源】的互联请求,表明该请求来自【A资源】的信息会体现在【B资源】的「referer...--- 出于对保护隐私的考虑,Firefox 和 Chrome 等浏览器引入了一套更精确控制浏览器如何发送「referer」请求头的机制,名叫「Referrer-Policy」。...如发起端 URL 为 https://example.com/page.html,实际发送的 referer 请求头里只有 https://example.com/; strict-origin 和 origin...现在的 JavaScript 脚本,不但可以访问和操控页面上的 DOM 元素,还可以和服务器端进行交互,故而带来的安全隐患也不容忽视。

    2.6K10

    图片和视频防盗链简单介绍

    bloglines.com [NC] //这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自simcole.cn,也不是来自zhuaxia.com,也不是来自google.com...,也不是来自baidu.com,也不是来自bloglines.com 的话),就执行下列转向:   RewriteRule ....通过php直接获取资源,在php中进行拦截 $referer = $_SERVER['HTTP_REFERER']; //HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候...代码内请求伪造referer PHP: $http = new Http("http://www.baidu.com/img/avatar.jpg"); $http->setHeader('Referer...referer: 如果页面中包含了如下 meta 标签,则从当前页面中发起的 http请求将只携带 origin 部分(注

    3.3K71

    跟我一起探索HTTP-内容安全策略(CSP)

    网站也可以使用 Strict-Transport-Security HTTP 标头确保连接的浏览器只使用加密通道。...比如一个可以上传文件和显示图片页面,应该允许图片来自任何地方,但限制表单的 action 属性只可以赋值为指定的端点。一个经过恰当设计的内容安全策略应该可以有效的保护页面免受跨站脚本Attack。...示例 4 一个线上银行网站的管理者想要确保网站的所有内容都要通过 SSL 方式获取,以避免Attacker窃听用户发出的请求。...此外,仅报告标头可以用来测试对策略未来的修订,而不用实际部署。...使用如下策略,该策略禁止任何资源的加载,除了来自 cdn.example.com 的样式表。

    41220

    Landing Site

    前天写了一篇关于如何增加博客粘性的日志,今天在搜索中到了 BloggingPro China,看到在其页面上,能够显示我是来自 Google 搜索而来自他的网站,并且还推荐几篇类似的文章。...最后在你的 single.php 文件的日志前面加上以下代码: You came here from 你可以通过在 Google 中搜索如何增加你博客的粘性,来到来到本站,就可以看到以下效果: 当然你也可以向像我一样对该插件进行些小小的修改,如首先把上面的说明改成中文,第二,如果没有相识的文章就不让其显示...ls_get_delim() 函数中的数组 $search_engines 中添加以下一行: 'baidu.com' => 'wd', 但是 Baidu 搜索过来,显示页面有些问题, 这应该是编码的问题

    24710

    Web应用服务器安全:攻击、防护与检测

    浏览器可以拒绝任何不来自预定义位置的任何内容,从而防止外部注入的脚本和其他此类恶意内容。...) Referrer-Policy: origin //在任何情况下,仅发送文件的源作为引用地址 Referrer-Policy: origin-when-cross-origin //对于同源的请求,...会发送完整的URL作为引用地址,但是对于非同源请求仅发送文件的源 Referrer-Policy: same-origin //对于同源的请求会发送引用地址,但是对于非同源请求则不发送引用地址信息。...//对于同源的请求,会发送完整的URL作为引用地址 Referrer-Policy: unsafe-url //无论是否同源请求,都发送完整的 URL(移除参数信息之后)作为引用地址。...我们必须确保用户从全 HTTPS 站点跳转到 HTTP 站点的时候,没有中间人可以嗅探出用户实际的 HTTPS URL,Referrer Policy 设置如下: //HAProxy http-response

    3.8K90

    【基本功】 前端安全系列之二:如何防止CSRF攻击?

    那么问题来了,我们如何判断请求是否来自外域呢?...在部分情况下,攻击者可以隐藏,甚至修改自己请求的Referer。 2014年,W3C的Web应用安全工作组发布了Referrer Policy草案,对浏览器该如何发送Referer做了详细的规定。...如何阻止外域请求 通过Header的验证,我们可以知道发起请求的来源域名,这些来源域名可能是网站本域,或者子域名,或者有授权的第三方域名,又或者来自不可信的未知域名。...防止网站被利用 前面所说的,都是被攻击的网站如何做好防护。而非防止攻击的发生,CSRF的攻击可以来自: 攻击者自己的网站。 有文件上传漏洞的网站。 第三方论坛等用户内容。...对于来自黑客自己的网站,我们无法防护。但对其他情况,那么如何防止自己的网站被利用成为攻击的源头呢? 严格管理所有的上传接口,防止任何预期之外的上传内容(例如HTML)。

    1.9K20

    从零开始学web安全(4)

    id=123请求也发了,服务器收到请求,发现还带了我的cookie,于是傻傻的认为是我要删这篇文章,就把删了。。...- referrer校验 - 验证码 - token 王牌一,referrer校验,非常简单,基本就验证一下请求referrer,合法的才给予操作。...比如下面那个post的demo,发现请求来自http://csrf.test,认为是非法操作,于是我的文章就没有被删了。 但是那个get的demo,似乎防范不了?...理论上referrer校验也是可以防范get的,只是这个demo有点特殊,不仅这个删除接口有csrf漏洞,还可以轻松评论任何src的图片。 造成了referrer居然是来自imweb.io。...可惜万事有利必有其弊,你总不能发每个请求都让用户敲一次验证码吧,所以这种一般只在某些特定场景用。 王牌三,token。这个应该是现在比较通用的方案。

    780110

    从零开始学web安全(4)

    id=123请求也发了,服务器收到请求,发现还带了我的cookie,于是傻傻的认为是我要删这篇文章,就把删了。。...- referrer校验 - 验证码 - token 王牌一,referrer校验,非常简单,基本就验证一下请求referrer,合法的才给予操作。...比如下面那个post的demo,发现请求来自http://csrf.test,认为是非法操作,于是我的文章就没有被删了。 但是那个get的demo,似乎防范不了?...理论上referrer校验也是可以防范get的,只是这个demo有点特殊,不仅这个删除接口有csrf漏洞,还可以轻松评论任何src的图片。 造成了referrer居然是来自imweb.io。...可惜万事有利必有其弊,你总不能发每个请求都让用户敲一次验证码吧,所以这种一般只在某些特定场景用。 王牌三,token。这个应该是现在比较通用的方案。

    37010

    学习 HTTP Referer

    HTTP Referer 是 HTTP 表头的一个字段,用来表示当前网页是来源于哪里,采用的格式是 URL。我们通过这个 HTTP Referer,可以查到访客的来源。...有同学可能会注意到 Referer “似乎”拼写有误,应该是 “Referrer" 才对,这其实是个历史原因,在早期 HTTP 规范当中就存在的拼写错误,后面为了向下兼容,所以将错就错。..." referrerpolicy="no-referrer">查看链接复制代码到此大家应该对 Referer 有了一个大概的了解,那么 Referer 字段在什么条件下会展示,以及如何去控制 Referer...工作中实际使用的场景:在双品牌“乐彩云”推广中为降低双域名跳转改造成本,运维层面在Nginx添加了一个规则,若访问链接(例如 news.zcygov.cn)的 Referer 包含 lecaiyun.com...add_header Referrer-Policy "no-referrer";复制代码设置完请求头,最终体现在浏览器 Headers 里字段是:Referrer-Policy: no-referrer

    1.7K30

    科普系列——如何解释什么是 AJAX?

    其实简单概括下,AJAX就是一种利用 JavaScript 向服务端发起请求,并获得服务端响应的技术。的特点是异步请求,局部刷新。...AJAX 解决的问题 我们刚才说过了,AJAX是一种发送请求的技术,那在AJAX被发明前,浏览器是如何请求的呢? 地址栏。...通过该接口,浏览器可以向服务器发送请求并取回所需的数据,并在客户端采用 JavaScript 处理来自服务器的回应。这就是 AJAX 的前身。...(果然生活处处皆学问) 那么我们又该如何在代码中使用这个XHR对象呢?...因此Fetch API横空出世,旨在修正上述缺陷,提供了与 HTTP 语义相同的 JS 语法,简单来说,引入了 fetch() 这个实用的方法来获取网络资源。

    84220

    教你在不使用框架的情况下也能写出现代化 PHP 代码

    PHP如何工作的? 在做其他事之前,搞清楚 PHP 如何与外界沟通是非常重要的。 PHP请求 / 响应为周期运行服务端应用程序。...与你的应用程序的每一次交互——无论是来自浏览器,命令行还是 REST API ——都是作为请求进入应用程序的。...自动加载的意思是:当你的程序需要使用一个类, PHP 在调用该类的时候知道去哪里找到并加载。...一旦文件创建好了,我们就可以在编辑器中打开然后向里面写入 autoload 字段,使他看起来像这个样子(这确保了自动加载器知道从哪里找到我们项目中的类): { "name": "kevinsmith...虽然它们可能会更复杂点,真正的应用应该配置成自动化的流式发射器用来应对大量下载的情况,Zend 博客展示了如何实现(https://framework.zend.com/blog/2017-09-14

    1.4K50

    PHP如何做图片防盗链的

    localhost [NC] RewriteRule .* no.png 来自localhost的访问: 来自于其他站点的访问: 至此,关于防盗链的知识我们学完了,但是不急,既然是一个请求头,当然是可以伪造的...2、反防盗链 上面我的服务器配置了图片防盗链,现在以来讲解反防盗链,如果我们在采集图片的时候,遇到使用防盗链技术的站点,我们可以在采集图片的时候伪造一个Referer头信息。.../Http.class.php';//这个类是我自己封装的一个用于HTTp请求的类 $http = new Http("http://localhost/booledu/http/apple.jpg")...> 不加Referer头信息下载的结果: 加Referer头信息下载的结果: 相应大家看到这,应该能看出来如何反防盗链吧,其实就是加上一个Referer头信息,那么,每个站点的Referer头信息从哪里找呢...这个应该抓包分析就可以得出来了! 未经允许不得转载:肥猫博客 » 用PHP如何做图片防盗链的

    1.3K30
    领券