Alpine和CSP,最速败北传说

news/2025/3/1 12:05:52/文章来源:https://www.cnblogs.com/oldsaltfish/p/18688782

描述

alpine是一个轻量级的响应式框架,但是当我将其写到用户脚本中后,我发现了一些问题。
image

试作解决

下面这个文档中有提到为什么会出现问题。
https://alpinejs.dev/advanced/csp
https://github.com/alpinejs/alpine/discussions/1944
https://github.com/alpinejs/alpine/discussions/1529
虽然官方文档中提到了csp且看似给出了解决方案,但是事实上,他们并没有发布csp包,我们无法在cdn网站上找到这个包,即使是使用官方文档中的链接。

image
这并不是一个很新鲜的问题,官方始终没有给出回应,明显是放弃了CSP支持。

什么是CSP

Content Security Policy (CSP),直译的话,就是内容安全策略
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
可以在响应标头中查看CSP。
image

CSP例子

以bing为例。

script-src https: 'strict-dynamic' 'report-sample' 'wasm-unsafe-eval' 'nonce-k3zMvfnSz3VD4tLFAs4kq/5GDfH9iDAoVF1bdS3Q8SQ='; base-uri 'self';report-to csp-endpoint

你可以问问ai这是什么意思,其中值得注意的就是这个'nonce-k3zMvfnSz3VD4tLFAs4kq/5GDfH9iDAoVF1bdS3Q8SQ=',他是服务器生成的,与script标签进行验证,如果二者一致则script可以成功加载,反之不行。这样,由于外部script不能轻易获取nonce,所以增强了安全性。

meta修改CSP(不推荐)

一般情况下,csp是在服务端配置的。
但是使用meta标签是可以修改csp的。

  // 创建一个新的 <meta> 元素const cspMeta = document.createElement('meta');// 设置 http-equiv 属性为 Content-Security-PolicycspMeta.httpEquiv = 'Content-Security-Policy';// 设置 content 属性以仅允许 unsafe-eval// 注意:这里假设你已经在其他地方定义了 default-src 或 script-src 等指令。// 如果没有,默认设置为 'self' 作为示例。cspMeta.content = "script-src https: 'unsafe-eval' 'unsafe-inline';";// 将 <meta> 元素添加到 <head>document.head.appendChild(cspMeta);

存在以下缺点:

  1. 只能改整个CSP,无法修改局部策略,比如我想要允许eval和内联,像我上面的代码那样,那么原有的配置就被覆盖了,当原有配置被覆盖时,就有可能出现一些原先不会出现的问题,从而引入不必要的复杂性。这是一个主要的缺点。
  2. 麻烦,使用meta来改CSP过于麻烦了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891505.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三思万能拉力试验机——驱动高分子材料创新研发的新引擎

一、引言 在当今工业升级与绿色制造的大背景下,高分子材料凭借其轻质、高强、耐腐蚀和环保等优势正被广泛应用于航空航天、汽车、电子、医疗等各个领域。与此同时,高分子材料产品在研发过程中对力学性能、耐久性和环境适应性等方面提出了更高要求。作为研发和质量控制的核心装…

【蓝队】access日志分析

一、access日志常见的目录 IIS 通常情况下,IIS日志文件存储在以下位置:C:\inetpub\logs\LogFiles。在这个目录下,您将看到以日期命名的子文件夹,每个子文件夹对应一个日期。在每个日期的文件夹中,您将找到具体的日志文件,通常以W3SVC开头,后面跟着一个唯一的标识符。Apa…

【蓝队】关于安全告警的正报样本

样本一:命令执行 常见的命令攻击语句 GET /simple/tests/tmssql.php?do=phpinfo GET /detail.php?id=/winnt/system32/cmd.exe?/c+dir+c:%5c GET /cgi/maker/ptcmd.cgi?cmd=;cat+/tmp/config/usr.ini GET /cgi/maker/ptcmd.cgi?cmd=;cat+/etc/passwd攻击语句出现在Get 、…

使用idea的restClient功能

模拟http请求的restClient工具 post请求 get请求:

【蓝队】关于安全告警的误报样本

背景: 一些网站实现存在安全隐患,用户的一些正常流量,也可以被攻击者篡改,直接发起攻击。常见问题:url参数实现时直接传递sql语句 url参数实现时可以传递js脚本 url参数实现时用../进行目录穿越访问文件 url参数实现时直接调用一些系统函数 url参数可以进行域名重定向 系统…

RStudio 2024 软件下载与安装教程

【RStudio 2024 软件下载与安装教程】 1-安装包 扫描下方二维码关注「软知社」,后台回复【033】三位数字即可免费获取分享链接,无广告拒绝套路; 2-安装教程双击R-4.4.2-win.exe安装,弹窗安装对话框选择语言,点击确定点击下一步选择安装目录,选择C盘以外,点击下一步点击…

H3C路由器与Centos8对接L2TP

linux做为LNS 1.安装xl2tpd yum install -y xl2tpd 2.配置文件 vim /etc/xl2tpd/xl2tpd.confvim /etc/ppp/options.xl2tpdvim /etc/ppp/chap-secrets3.启动 systemctl restart xl2tpd.service systemctl enable xl2tpd.service4.添加路由 ip link add name veth1 type veth ip …

DeepSeek开源DeepGEMM:有哪些技术亮点?

近日,DeepSeek再次凭借开源举措惊艳众人,其发布的DeepGEMM,一款开源的FP8通用矩阵乘法库,为AI算力提升开辟了新路径。这已经是他们开源周的第三个项目,前两个是FlashMLA和DeepEP,各有千秋,但DeepGEMM,在我看来,才是真正捅破窗户纸的那一个。本文将深入剖析DeepGEMM的技…

Maple2023软件下载与安装教程

【Maple2023软件下载与安装教程】 1、安装包 扫描下方二维码关注「软知社」,后台回复【032】三位数字即可免费获取分享链接,无广告拒绝套路; 2、安装教程双击setup-windows.exe安装,弹窗安装对话框默认英语版本,点击下一步点击下一步选择I accept ,点击Next选择安装路径…

Lambda表达式的省略规则--java进阶day03

1.省略规则2.流程讲解 主方法中调用useStringhandler,该方法的形参是接口,所以我们要给实现类对象,这里我们使用匿名内部类 use...方法进栈,形参也是变量,接收到匿名内部类(如下图),相当于创建出接口对象,并且重写了方法,最后调用方法3.规则讲解 清楚了流程后,我们以…

记录win11安装CH341A驱动

在网上下载驱动包,打开setup.exe,点击安装插上编程器之后,打开设备管理器,找到设备,右击设备->属性->更新驱动程序->浏览我的电脑查找驱动程序->让我从计算机上的可用驱动程序列表中选取->端口(COM和LPT)->厂商选wch->选型号 选择完后,打开window…

陪玩程序源码,微信小程序中支付的实现

陪玩程序源码,微信小程序中支付的实现调用微信小程序支付需要携带以下几个参数,支付成功后在success成功的回调内做对应操作示例代码wx.requestPayment({timeStamp: 1414561699, // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间nonceStr: xxxxxx, //…