「 网络安全术语解读 」内容安全策略CSP详解

这篇具有很好参考价值的文章主要介绍了「 网络安全术语解读 」内容安全策略CSP详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言:什么是CSP,它为什么可以防御一些常见的网络攻击,比如XSS攻击,具体原理是什么?以及如何绕过CSP?

1. CSP定义

CSP(Content Security Policy,内容安全策略)是一种网络安全技术,它通过限制网页中可以加载的资源(如脚本和图像),来防止恶意攻击,如跨站脚本攻击(XSS)。CSP的主要原理是通过在网页中实施一些安全策略来限制代码执行,从而减少攻击者利用的机会。

Note:要启用CSP,响应需要包含名为Content-Security-Policy的HTTP响应标头,该标头的值包含策略。策略本身由一个或多个指令组成,由分号分隔。

2. 工作原理

CSP通过实施一系列安全策略来限制网页中可以执行的代码,从而减少恶意攻击者利用的机会。这种技术对于保护网站免受XSS攻击等常见网络攻击非常有效。CSP的工作原理大致可以分为以下几个步骤:

  • 1. 策略定义:CSP通过在HTTP响应头中设置一系列策略来定义网页可以执行哪些类型的代码。这些策略包括允许或阻止特定类型的脚本执行,以及定义脚本的来源。
  • 2. 代码执行:当浏览器加载并解析网页时,它会检查代码中是否包含CSP定义的策略所禁止的脚本类型。如果包含,浏览器会阻止对这些脚本的执行。如果没有包含任何被禁止的脚本类型,浏览器就会按照正常的流程解析和执行代码。
  • 3. 防止XSS攻击:CSP的主要用途之一是防止XSS攻击。通过限制脚本的来源,CSP可以阻止恶意网站通过注入恶意脚本来窃取用户数据或控制用户的浏览器。例如,如果CSP指定网页只能执行来自可信来源的脚本,那么恶意网站就无法注入自己的脚本。

此外,CSP还可以提供其他安全优势,例如防止 CSRF(跨站请求伪造)攻击和减少加载时间。CSP可以与现代浏览器一起工作,提供一种简单而有效的方式来增强网站的安全性。

3. 使用CSP削减XSS攻击

跨站脚本攻击(XSS)是一种常见的网络安全漏洞,攻击者通过在受害者的浏览器上注入恶意脚本,从而窃取或操纵数据。内容安全策略(CSP)是一种安全特性,可以防止跨站脚本攻击和其他类似攻击。

关于XSS的详细介绍可以参阅博主的文章– 典型安全漏洞系列 」01.XSS攻击详解

通过以下方法组合可缓解XSS攻击。需要注意的是,CSP并不能完全防止XSS攻击,而是一种补充措施,结合其他安全策略和代码审查,共同提高网站的安全性。

3.1. 设置CSP headers

在服务器端,为响应添加以下CSP头部:

  • Content-Security-Policy:定义允许加载资源的来源,从而限制恶意脚本的来源。
    例如:Content-Security-Policy: default-src 'self'; script-src 'self'; img-src 'self' data:; style-src 'self'

  • Content-Security-Script-Source-List:指定允许脚本加载的来源,仅允许来自可信来源的脚本。
    例如:Content-Security-Script-Source-List: https://example.com

3.2. 限制脚本执行

在HTML中使用sandbox属性,限制脚本在页面上的执行范围。

<iframe src="https://example.com" sandbox="allow-scripts allow-same-origin allow-forms"></iframe>

3.3. 使用CSP时组合HTTP-only Cookie

将Cookie标记为HTTPOnly,防止攻击者通过JavaScript脚本窃取Cookie。

document.cookie = "username=JohnDoe; HTTPOnly";

3.4. 启用CSP报告

启用CSP报告功能,以便在检测到违规行为时收到通知。

navigator.serviceWorker.ready.then(registration => {
  registration.active.addEventListener('message', (event) => {
    if (event.data.type === 'violation-report') {
      console.log('CSP violation:', event.data.message);
    }
  });
});

3.5. 定期审查和更新CSP策略

随着网络环境的变化,定期审查和更新CSP策略,确保其持续有效。

4. 使用CSP防止点击劫持

clickjacking(点击劫持)是一种Web安全漏洞,攻击者通过覆盖或替换页面上的元素,诱使用户点击恶意链接或提交表单。CSP可以帮助防止点击劫持等攻击。以下是使用CSP防止点击劫持的主要步骤:

1、设置CSP headers

在服务器端,为响应添加以下CSP头部

  • Content-Security-Policy:定义允许加载资源的来源,从而限制恶意脚本的来源。
    例如:Content-Security-Policy: default-src 'self'; script-src 'self'; img-src 'self' data:; style-src 'self'

  • Content-Security-Script-Source-List:指定允许脚本加载的来源,仅允许来自可信来源的脚本。
    例如:Content-Security-Script-Source-List: https://example.com

2、限制iframe的来源和行为

使用CSP限制iframe的来源和行为,以防止攻击者利用iframe实施点击劫持。

  • 在CSP中添加以下规则:
 iframe-src 'self';
 iframe-src-attr allow-same-origin allow-script-src 'self';

这将允许来自同一站点的iframe,并允许在iframe中加载本站的脚本。

3、防止跨域资源共享(CORS)攻击

CORS是一种允许服务器在响应中加入CSP头部的机制,以限制跨域请求。通过设置CORS,可以防止攻击者利用跨域资源共享漏洞实施点击劫持。

  • 在服务器端设置CORS:
  // 服务器端代码
  response.setHeader("Access-Control-Allow-Origin", "*");
  response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
  response.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");

4、使用JavaScript检测和防止点击劫持

在客户端,使用JavaScript检测和防止点击劫持。例如,通过监听鼠标事件,检查用户点击的元素是否与页面内容相符。

document.addEventListener('mousemove', function(event) {
  var target = event.target;
  while (target != document.body) {
    if (target.tagName.toLowerCase() === 'iframe') {
      // 检查iframe的src属性是否与预期相符
      if (target.src !== 'about:blank' && target.src !== 'https://example.com') {
        alert('点击劫持攻击!');
        // 采取措施阻止攻击,例如禁用该iframe
        target.parentNode.removeChild(target);
      }
    }
    target = target.parentNode;
  }
});

5. 使用CSP削减悬空标记攻击

以下指令将仅允许加载与页面同源的图像:
img-src 'self'

以下指令将仅允许从特定域名加载图像:
img-src https://images.normal-website.com

请注意,这些策略将防止一些悬空标记攻击,因为在没有用户交互的情况下捕获数据的一种简单方法是使用img标记。然而,它不会阻止其他攻击,例如那些插入具有悬挂href属性的锚标记的攻击。

Note:关于悬空标记攻击的详细介绍,可参阅博主文章。

6. 通过策略注入来绕过CSP

我们可能会遇到一个将输入反射到实际策略的网站,最有可能的是在report-uri指令中。如果网站反射一个我们可以控制的参数,就可以注入一个分号来添加自己的CSP指令。通常,这个report-uri指令是策略列表中的最后一个。这意味着我们需要覆盖现有的指令才能利用这个漏洞并绕过策略。

通常,无法覆盖现有的script-src指令。然而,Chrome最近引入了script-src-elem指令,它允许我们控制脚本元素,但不允许控制事件。重要的是,这个新指令允许我们覆盖现有的script-src指令。

7. 参考

[1] https://portswigger.net/web-security/cross-site-scripting/content-security-policy文章来源地址https://www.toymoban.com/news/detail-786962.html

到了这里,关于「 网络安全术语解读 」内容安全策略CSP详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「 网络安全常用术语解读 」安全自动化协议SCAP详解

    本文主要介绍什么是SCAP,SCAP的产生背景是怎样的,SCAP有什么用途,有哪些组件,各个组件的用途是什么? 由于计算机和网络技术的快速发展,越来越多的软件和系统被应用到企业和机构中,这些软件和系统的安全问题也日益凸显。传统的安全措施,如防火墙、入侵检测等,

    2024年01月23日
    浏览(42)
  • 「 网络安全常用术语解读 」杀链Kill Chain详解

    早在2009年,Lockheed Martin公司就提出了杀链(Kill Chain)理论,现在也称之为攻击者杀链(Attacker Kill Chain)。杀链其实就是攻击者进行网络攻击时所采取的步骤。杀链模型包括7个步骤: 1侦察 - 2武器化 - 3交付 - 4利用 - 5安装 - 6命令和控制 - 7针对目标的活动 。在第1-6步的任何时刻进

    2024年01月20日
    浏览(40)
  • Web安全之Content Security Policy(CSP 内容安全策略)详解

    Content Security Policy是一种网页安全策略,现代浏览器使用它来增强网页的安全性。可以通过Content Security Policy来限制哪些资源(如JavaScript、CSS、图像等)可以被加载,从哪些url加载。 CSP 本质上是白名单机制,开发者明确告诉浏览器哪些外部资源可以加载和执行,可以从哪些url加

    2024年02月13日
    浏览(39)
  • CSP内容安全策略原理与绕过

    Content Security Policy (CSP)内容安全策略,是一个附加的安全层,有助于检测并缓解某些类型的攻击,包括跨站脚本(XSS)和数据注入攻击。 CSP的特点就是他是在浏览器层面做的防护,是和同源策略同一级别,除非浏览器本身出现漏洞,否则不可能从机制上绕过。 CSP只允许被

    2024年02月10日
    浏览(47)
  • 前端安全-内容安全策略CSP(Content Security Policy)

    目录 CSP xss 使用方法 http头部设置 meta标签设置 策略集组成 常见指令 default-src report-uri 示例  指令(属性)  指令值(属性值) CSP学习链接  内容安全策略,为了页面内容安全而制定的一系列防护策略。可以通过CSP指定策略来规定页面加载的内容来源(这里的内容可以指脚本

    2024年02月05日
    浏览(41)
  • 【网络安全】安全常见术语介绍

    介绍 在学习信息安全领域时,了解一些常见的术语是非常重要的。这些术语涵盖了各种安全概念和技术,对保护个人和组织的数字资产至关重要。本章将介绍一些常见的安全术语,旨在帮助小白用户更好地理解和应对不同的安全挑战。 1. 防火墙(Firewall) 定义 防火墙是一种

    2024年02月02日
    浏览(68)
  • 【网络安全】-安全常见术语介绍

    在学习信息安全领域时,了解一些常见的术语是非常重要的。这些术语涵盖了各种安全概念和技术,对保护个人和组织的数字资产至关重要。本章将介绍一些常见的安全术语,旨在帮助小白用户更好地理解和应对不同的安全挑战。 定义 防火墙是一种网络安全设备,用于监控

    2024年02月05日
    浏览(55)
  • web开发中的安全和防御入门——csp (content-security-policy内容安全策略)

    偶然碰到iframe跨域加载被拒绝的问题,原因是父页面默认不允许加载跨域的子页面,也就是的content-security-policy中没有设置允许跨域加载。 简单地说,content-security-policy能限制页面允许和不允许加载的所有资源,常见的包括: iframe加载的子页面url js文件 图片、视频、音频、字

    2024年02月14日
    浏览(38)
  • ​一些常见网络安全术语​

    1、黑帽 为非法目的进行黑客攻击的人,通常是为了经济利益。他们进入安全网络以销毁,赎回,修改或窃取数据,或使网络无法用于授权用户。这个名字来源于这样一个事实:老式的黑白西部电影中的恶棍很容易被电影观众识别,因为他们穿着黑色的斯泰森,而“好人”则

    2024年02月11日
    浏览(55)
  • 网络安全常用术语

    肉鸡 肉鸡指的就是被黑客成功入侵并取得控制权限的电脑。黑客们可以随意的控制肉鸡,就像在使用自己的电脑一样,很形象的比喻,就像是养的肉鸡,任黑客宰杀和利用。关键的是,在成为肉鸡后,只要黑客不对电脑进行破坏,使用者很难发现,有可能就是被养在哪里,随

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包