在浏览网页的过程中,尤其是移动端的网页,经常看到有很多无关的广告,其实大部分广告都是所在的网络劫持了网站响应的内容,并在其中植入了广告代码。如何为了防止这种情况发生呢,下面来说说防止网站被运营商网络劫持强行插入广告的方法。

方法一、安装SSL证书,实现HTTPS加密。
方法二、使用 内容安全策略CSP 进行限制。

什么是内容安全策略CSP?
      CSP指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。简单来说,就是我们能够规定,我们的网站只接受我们指定的请求资源。

内容安全策略CSP的意义

防XSS、运营商网络劫持插入广告等攻击的利器。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。

CSP的配置方法
1、通过 HTTP 头信息的Content-Security-Policy的字段
     1.1 、Nginx如何添加
               在宝塔面板上的站点设置-》配置文件的,server{}代码段里添加一行

  1. add_header Content-Security-Policy "你的策略";

1.2 、Apache如何添加

               在宝塔面板上的站点设置-》配置文件或者.htaccess文件中加入一行

  1. Header set Content-Security-Policy "你的策略"


2、通过网页的<meta>标签

  1. <meta http-equiv="Content-Security-Policy" content="你的策略'">

策略应该怎么写

1. // 限制所有的外部资源,都只能从当前域名加载
2. default-src 'self'
3. 
4. // default-src 是 CSP 指令,多个指令之间用英文分号分割;多个指令值用英文空格分割
5. default-src https://host1.com https://host2.com; frame-src 'none'; object-src 'none'  
6. 
7. // 错误写法,第二个指令将会被忽略
8. script-src https://host1.com; script-src https://host2.com
9. 
10. // 正确写法如下
11. script-src https://host1.com https://host2.com