微信小程序——网络请求之关于referer

本文介绍了HTTP Referer的概念及其在浏览器请求中的作用。针对微信小程序,文章指出其网络请求的referer不可自定义,其格式固定为'appid+版本号',其中appid是小程序的标识,版本号为0表示开发版。因此,开发者无需在头信息中设置referer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先解释一下referer:

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。


在微信小程序中:

网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版。


总之,不要在head中写referer就可以了。

### 微信小程序中的CSRF漏洞挖掘方法 在微信小程序环境中,跨站请求伪造(CSRF)攻击同样是一个潜在的风险。这类攻击允许攻击者通过伪装成受害者发起未经许可的操作。为了有效识别并防范这些风险,在开发过程中应特别关注以下几个方面: #### 1. 请求验证机制审查 检查服务器端对于来自客户端的每一个敏感操作请求是否有严格的源校验逻辑。如果缺少有效的来源验证,则可能存在被利用的可能性[^2]。 ```javascript // 不推荐的做法:未对请求来源做任何限制 app.post('/api/sensitive-operation', (req, res) => { // 执行某些重要业务... }); // 推荐做法:加入Origin或Referer头域检测 const allowedOrigins = ['https://example.com']; app.use((req, res, next) => { const origin = req.headers.origin || req.headers.referer; if (!origin || !allowedOrigins.includes(origin)) { return res.status(403).send('Forbidden'); } next(); }); ``` #### 2. Token同步模式应用 采用Token Synchronization Pattern来防止CSRF攻击。具体来说就是在每次表单提交或其他交互动作之前先获取一个随机生成的一次性令牌,并将其嵌入到HTML页面中作为隐藏字段;当实际发送HTTP POST请求时再把这个token一同传递给服务端用于身份确认[^1]。 ```html <!-- HTML部分 --> <form action="/submit" method="POST"> <!-- ...其他输入框... --> <input type="hidden" name="_csrf_token" value="{{ csrf_token }}"> </form> // JavaScript部分负责动态加载CSRF token fetch('/get-csrf-token') .then(response => response.json()) .then(data => document.querySelector('[name=_csrf_token]').value = data.token); ``` #### 3. 同源策略加强 确保API接口遵循同源政策(Same-Origin Policy),即只接受来源于同一协议、域名和端口下的资源访问请求。这可以极大程度上减少外部站点非法调用内部接口的机会。 #### 4. 使用Anti-CSRF Header 除了传统的基于cookie-session的方式外,还可以考虑引入专门针对RESTful API设计的身份认证方案——比如OAuth 2.0 或 JSON Web Tokens(JWT)[^1]。同时可以在每个AJAX请求头部附加特定名称的anti-forgery header来进行额外一层保护。 ```http GET /resource HTTP/1.1 Host: api.example.com Authorization: Bearer <access_token> X-Csrf-Token: <unique_value_here> ``` ### 防护措施总结 - **严格控制请求源头**:通过对`Origin`或`Referer`等HTTP头部信息进行过滤,阻止不符合预期的跨域请求到达目标URL。 - **实施双重Cookie防御**:结合HttpOnly属性标记的服务端session cookie与前端可控的自定义防伪token共同作用于每一次涉及状态变更的动作之上。 - **增强API安全性**:为所有公开暴露在外网环境里的Web Service制定严谨的身份鉴别流程,必要时启用HTTPS加密传输通道以保障通信链路安全可靠。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值