1.背景
需要做一个微信分享的后端支持接口,请求响应中包含appid,为了避免对外暴露配置相应的安全策略
2.步骤
限制请求域名
在后端cors过滤器中添加指定的域名作为allowedOrigins的值,非此域名无法访问接口\
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("aa.bb.cc")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
}
限制请求来源
在后端读取referer值判断是否是规定的来源页,否则禁止调用
String referer = request.getHeader("referer");
String pattern = "^http://h5.zwlearn.com/yifu.*$";
if (referer == null || !Pattern.matches(pattern, referer)) {
throw new RRException("禁止调用");
}
在以上步骤时,因为做了nginx的反向代理,所以为了获得真实的请求域名和请求来源页,做如下配置:
location /api/{
proxy_set_header Ref

本文介绍了为防止微信分享接口被恶意调用而采取的安全措施,包括在后端CORS过滤器中限定允许的请求域名,并通过读取referer判断请求来源。同时,讨论了在HTTP环境下确保referer发送的配置以及不同Referrer Policy的使用场景。虽然这些措施能有效阻止其他域名和直接访问,但在接口测试工具中仍可通过手动设定referrer进行访问。
最低0.47元/天 解锁文章
1318





