我有一个托管在Firebase上的网站,使用静态HTML,没有使用服务器端功能来提供结果。
运行curl -X PURGE https://mywebsite.com -v -L
时,结果是:
{ "status": "ok", "id": "20755-1619059392-3560756" }
我需要一种方法来限制此操作只允许特定的IP进行,以防止任何人重置我的缓存导致额外的费用。
此外,似乎Firebase使用Varnish来管理缓存(这是我不懂的东西)。
我的客户安全顾问向我们发送了以下建议来处理此问题,我不确定这是否是.htaccess语法或其他:
# Varnish recommends to using PURGE method only by valid user,
# for example by ip limiting and for other return 405 Not allowed:
acl purge {
"localhost";
"192.168.55.0"/24;
}
sub vcl_recv {
# allow PURGE from localhost and 192.168.55...
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
}
我不知道如何在Firebase Hosting中应用此方法,我没有使用服务器函数,只是使用以下标头的普通firebase.json
:
"headers": [
{
"source": "*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)",
"headers": [
{
"key": "Cache-Control",
"value": "public,max-age=31536000,immutable"
}
]
},
{
"source": "**/*.@(json|eot|otf|ttf|ttc|woff|font.css)",
"headers": [
{
"key": "Access-Control-Allow-Origin",
"value": "*"
}
]
}
]