上海圣品科技 做网站,涿州市建设局网站网址是多少,红色网站欣赏,常用的网络推广平台有哪些呢引言#xff1a;什么是CSP#xff0c;它为什么可以防御一些常见的网络攻击#xff0c;比如XSS攻击#xff0c;具体原理是什么#xff1f;以及如何绕过CSP#xff1f; 1. CSP定义
CSP#xff08;Content Security Policy#xff0c;内容安全策略#xff09;是一种网络… 引言什么是CSP它为什么可以防御一些常见的网络攻击比如XSS攻击具体原理是什么以及如何绕过CSP 1. CSP定义
CSPContent 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 srchttps://example.com sandboxallow-scripts allow-same-origin allow-forms/iframe3.3. 使用CSP时组合HTTP-only Cookie
将Cookie标记为HTTPOnly防止攻击者通过JavaScript脚本窃取Cookie。
document.cookie usernameJohnDoe; 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(点击劫持攻击);// 采取措施阻止攻击例如禁用该iframetarget.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