[CSP/ACWING]3203. 画图

思路:核心是对染色的每个小正方形编号,编号用左下角坐标表示,所以右上角横纵坐标要-1。之后暴力模拟

#include <bits/stdc++.h>
using namespace std;
bool a[110][110];
//规定左下角坐标作为染色正方形编号
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        //直接染色,因为左下角坐标代表正方形号,所以右上角坐标x,y各-1.比如原来(1,1)到(2,2)染色,只有(1,1)号正方形染了,所以(2,2)
        //改为(2-1,2-1)
        for(int i=x1;i<x2;i++)
        {
            for(int j=y1;j<y2;j++)
            {
                a[i][j]=true;//对应正方形编号块染色
            }
        }
    }
    int ans=0;
    for(int i=0;i<110;i++)
    {
        for(int j=0;j<110;j++)
        {
            if(a[i][j])
            {
                ans++;
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

在处理前端安全策略问题时,`Content-Security-Policy`(CSP)和 `Cookie` 相关的限制是现代 Web 安全机制的重要组成部分。当遇到 `Content-Security-Policy: script-src violation` 导致 Google reCAPTCHA 的脚本被阻止执行时,通常是因为 CSP 策略未明确允许加载和执行来自特定源的脚本。 ### 1. 解决 Content-Security-Policy 中 script-src 限制导致的问题 为了使 Google reCAPTCHA 正常工作,需要确保 CSP 头部中包含以下内容: ```http Content-Security-Policy: script-src 'self' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; ``` 此策略允许从当前域(`'self'`)、Google 的 reCAPTCHA 域和 Google 静态资源域加载脚本。如果使用了 `'unsafe-inline'` 或动态脚本执行(如内联 `<script>` 标签),还需要添加 `'unsafe-inline'` 或 `'nonce-...'` 来支持非外部 JS 文件的执行[^1]。 此外,reCAPTCHA v2 和 v3 使用了多个子域名和资源路径,因此建议将 CSP 设置为: ```http Content-Security-Policy: script-src 'self' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; connect-src 'self' https://www.google.com/recaptcha/; img-src 'self' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; ``` 这样可以确保 `reCAPTCHA` 的所有相关资源(脚本、图片、网络请求)都被正确加载和执行[^2]。 ### 2. 使用 Nonce 或 Hash 提高安全性 如果希望避免使用 `'unsafe-inline'`,可以采用 `nonce` 或 `hash` 的方式来允许特定的内联脚本执行。例如: ```http Content-Security-Policy: script-src 'self' 'nonce-abc123xyz'; ``` 然后在 HTML 中使用该 nonce: ```html <script nonce="abc123xyz"> // 内联脚本内容 </script> ``` 或者对于外部脚本,可以使用哈希值: ```http Content-Security-Policy: script-src 'self' 'sha256-HASH_HERE'; ``` 这种方式提高了安全性,同时避免了对 `'unsafe-inline'` 的依赖[^3]。 ### 3. Cookie 被拒绝:SameSite 和 Secure 属性设置 关于 Cookie 被浏览器拒绝的问题,通常是由于 `SameSite` 和 `Secure` 属性配置不当引起的。现代浏览器默认对 Cookie 实施更严格的安全策略: - **SameSite=Lax**:防止跨站请求携带 Cookie。 - **Secure**:仅通过 HTTPS 协议发送 Cookie。 若要确保 Cookie 在跨域场景下正常工作(如嵌入第三方 iframe),应设置: ```http Set-Cookie: session=abc123; Path=/; Domain=.example.com; Secure; SameSite=None ``` 注意: - `SameSite=None` 必须与 `Secure` 一起使用,否则某些浏览器会忽略该 Cookie。 - 如果网站没有 HTTPS 支持,则不能使用 `Secure`,这会导致 Cookie 不被存储或发送[^4]。 ### 4. 测试与调试工具 可以通过以下方式调试 CSP 违规行为: - 使用 `Content-Security-Policy-Report-Only` 模式进行测试,观察哪些资源会被拦截而不实际阻断页面功能。 - 利用浏览器开发者工具中的 **Console** 和 **Network** 面板查看具体的 CSP 违规报告。 - 结合 `report-uri` 或 `report-to` 指令收集违规信息,便于分析并调整策略。 示例: ```http Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-violation-report-endpoint ``` 后端需实现 `/csp-violation-report-endpoint` 接口以接收 JSON 格式的违规报告[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luminous815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值