在 Firgt的博客发布
在 萌社区转载
在26年春节的时候,大家都在休息嘛,我也比较懒。我不知道的是,我的博客还有我firgt.cn下的时候子域名开始遭到劫持,只要用户一访问就会跳转到黄网(看看我发的帖子——娘的,我气死了,站点全都停用了,还跳黄)
↑这里要感谢萌友Yuenji的反馈。
刚开始还以为,wtf是不是我的网站遭到攻击了,但是转念一想,我不是用了Cloudflare CDN吗,是不是cf又日常抽风?
先查了一下服务器的log,奇怪,压根就没有跳转到某某网站的响应,查了一下,服务器还是安全的。
emm...于是乎,上网一顿猛搜,发现曾经有人伪造过假请求到cf的cdn,造成cdn缓存被注入。比如他伪造一个假请求到你的域名,是提供cdn的缓存,误以为按照用户的请求应当通过域名跳转至某某网站(只要缓存不清除的话,这个现象就会有)
那我就试了一下,清了几次缓存,TTL的拉取时间从原来的20小时变成了1小时
还是没有用
于是我把重心放在了DNS上,去配置了DNSSEC
我就想着,这回终于有用了吧,但是事与愿违,刷新多几次还是会跳转9*窝
一时间束手无措,到底哪里出了问题?
查了log,服务器响应没有夹带私货
在本地运行网站,没有私货
使用cdn的js文件,没有夹带私货
只能是Cloudflare CDN的缓存及请求问题(有人使用假的请求,使CDN缓存夹带私货)
所以暂时使用cf五秒盾I'm Under Attack!解决
本以为开了人机验证就万事大吉了
结果...
啊啊啊😭
娘的,我受不了了!
尝试了开HSTS,关站,停止DNS解析,结果还是跳转到黄网上(难不成哪个byd偷偷把DNS解析到某某黄网了😱)
最后萌友芹香serika反馈,终于让我意识到了问题
运营商 / 路由器在页面里偷偷加一段 JS 跳转
浏览器加载完你的页面后,被本地恶意代码跳走
😂我真是哭笑不得,那没办法,去网上查了一下这种问题的解决方案,通过使用CSP(内容安全策略)防住页面注入跳转
用户就算被注入代码,浏览器也会直接拦截,跳不走
我这里以宝塔、Nginx举例修改安全响应头,使用CSP(内容安全策略)
server { ... } 核心代码块(不要动全局主配置的http块,这里只改单站)。server 块内任意空白处粘贴以下代码(可以按照注意里的提示自行修改):add_header Content-Security-Policy "default-src 'self' https://v1.hitokoto.cn https://hitokoto.cn; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: *; frame-src 'self'; child-src 'self'; object-src 'self'; frame-ancestors 'self'; base-uri 'self'; form-action 'self'" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), notifications=(), popup=(), fullscreen=(), autoplay=()" always;
Ctrl+F5 强制刷新。default-src里已加https://v1.hitokoto.cn https://hitokoto.cn白名单(放行一言API,保证正常使用)
如果不想用*放行所有图片,可精准指定图片域名(比如你的图片 CDN 是cdn.firgt.cn):
img-src 'self' data: https://blog.firgt.cn https://cdn.firgt.cn;
我这里是通过Object来内嵌页面,如果只想放行/match/目录的内嵌 HTML:
object-src 'self' /match/;
最后得到

至此大功告成
如果你有建议或要反馈问题,可以联系我
作者:FirgtZhong