把静态网站的公开访问收敛到最小:OBS 桶策略、防盗链与跨域的三处收口

举报
yd_282668295 发表于 2026/10/27 01:34:42 2026/10/27
【摘要】 静态网站看起来最简单,也最容易在公开访问上失手。一个桶、几十个页面、一些图片与脚本,一旦整桶设为公开读,就等于把所有历史文件、测试页和本不该外露的附件一起交给了互联网。本文不谈复杂架构,只做三处收口:对象前缀、桶策略条件与来源控制、防盗链与跨域配置,让公开的部分刚好够用。一、公开读只给必要的对象前缀先把桶里对象分开。公开的放进 site/ 或 public/ 这样的前缀,只读这些前缀;草稿、...

静态网站看起来最简单,也最容易在公开访问上失手。一个桶、几十个页面、一些图片与脚本,一旦整桶设为公开读,就等于把所有历史文件、测试页和本不该外露的附件一起交给了互联网。本文不谈复杂架构,只做三处收口:对象前缀、桶策略条件与来源控制、防盗链与跨域配置,让公开的部分刚好够用。

一、公开读只给必要的对象前缀
先把桶里对象分开。公开的放进 site/ 或 public/ 这样的前缀,只读这些前缀;草稿、源文件、备份、内部文档不要放进同一个公开前缀。桶策略里不要写整桶的 GetObject 允许,资源写成对象前缀,例如只允许读取 site/*。这样即使有人猜到文件名,也拿不到前缀之外的对象。

二、桶策略按来源与条件再收一层
只给前缀还不够,条件要再收紧。公开读的动作只保留读取对象,不要顺带放开列举桶、上传或删除。来源条件可以根据业务加限制,写入、删除与修改桶策略的操作必须走身份认证,绝不能因为图方便放进匿名策略。每次改策略后立即用匿名方式验证,确认能读该读的、读不到不该读的,再上线。

三、防盗链:Referer 白名单要取舍
开启防盗链后,只把自己的域名、测试域名与必要的合作域名放进白名单。空 Referer 要单独想清楚:直接打开链接、部分浏览器与客户端可能不带 Referer,全部拦截会影响正常访问,全部放行又会留一个口子。常见做法是公开页面允许空 Referer,但图片与大文件目录严格校验;上线前用非白名单域名做一次引用测试,确认返回拒绝,再放行。

四、跨域 CORS 只开最小配置
静态页面调用其他域名接口或字体资源时才需要跨域。允许来源只写本站与确实需要的域名,不要写星号。允许方法只写 GET 与 HEAD,允许头只写实际用到的字段。不要因为调试方便就长期保留宽松配置,调试用的域名要在上线前删掉。

五、上线前检查清单
上线前按清单逐项过一遍:匿名访问公开页正常;前缀外对象返回拒绝;非白名单站点引用图片被拒绝;跨域预检只对本站域名通过;错误页不泄露桶内结构;访问日志与流量告警已开启;策略变更留有记录与回滚方法。

收口不是关门,而是让每一处公开都有名字、有范围、有到期复查。把这三处收好,静态网站既能正常访问,也不会因为一次随手公开而付出流量与安全的代价。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。