Skip to content

privatebin修改默认csp策略

不清楚最近是网络问题还是sendanywhere的服务问题,最近文本文件从pc传手机总有问题。手上的设备并不是每个都能装通讯工具,但是所有设备都能连接公网。

看了下pastebin类的服务,privatebin能生成二维码,能发邮件,基本能满足我的需求 。简单看了github介绍,docker服务搭建也比较简单,cpu可以不考虑,内存有个50-100mb应该也就够了。

docker-compose.yml 基本如下

version: '3'
  
volumes:
  privatebin:
    driver: local
  pbng:
    driver: local
services:
  app:
    image: privatebin/nginx-fpm-alpine
    container_name: privatebin
    environment:
      - USER_UID=1000
      - USER_GID=1000
    volumes:
      - privatebin:/srv
      - pbng:/etc/nginx/http.d
    ports:
      - "9900:8080"

搭建完成后,在 /srv/tpl/bootstrap.php/srv/tpl/page.php 中添加paste服务的plausible统计脚本

<script async defer data-domain="paste服务的域名" src="https://plausible服务的域名/js/plausible.js"></script>

服务启动后问题就来了

由于paste服务和plausible服务的域名不同,这里发生了跨域问题,CSP策略拦截了plausible统计脚本。

简单google了下,找到了相关资料https://git.nolog.cz/NoLog.cz/PrivateBin/commit/e9b10f9e2daa2c0e69f39ca5af8ebf4585337dbb?lang=ja-JP,发现csp是/srv/lib/Configuration.php中配置的。

知道csp的配置所在的位置就简单了,在script-src 项中添加plausible服务的地址就可以了。

修改后的配置项如下:

'cspheader'                => 'default-src \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' https://plausible服务的域名  \'unsafe-eval\' resource:; style-src \'self\'; font-src \'self\'; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads',

到此问题解决,plausible可以统计paste服务的访问情况了。

如果你用的是google analytics,处理的方式也是一样的。

如果是其他跨域脚本,参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP 到说明来添加对应白名单就好了。

Published in技术自建服务

Be First to Comment

Leave a Reply

Your email address will not be published.