postman注入csrf




示例脚本

参数配置位置

必要参数

django项目仅需要设置domain即可,比如www.baidu.com,baidu.com尽量域名精确避免修改到其他域的参数

必须把这个domain添加到 cookies->Manage cookies ->Domains Allowlist 中,否则cookie的注入失败

代码

javascript 复制代码
// 必须把这个domain添加到 cookies->Manage cookies ->Domains Allowlist 中,否则cookie的注入失败
var domain = pm.environment.get("domain") || pm.globals.get("domain");
// console.log("domain:",domain)

// 获取全局变量的csrf, csrf为任意64位字符串若不设置则使用默认
var csrf = pm.globals.get("csrf") || "0123456789012345678901234567890123456789012345678901234567891234";

// 若没有设置环境变量则取全局变量
var csrf_cookie_name = pm.environment.get("csrf_cookie_name") || pm.globals.get("csrf_cookie_name")
// 默认为django设置的名字为csrftoken
var default_csrf_cookie_name = "csrftoken"

if (csrf_cookie_name) {
    // 如果有csrf_cookie_name
    csrf_cookie_name = csrf_cookie_name;
} else {
    // 如果没有
    csrf_cookie_name = default_csrf_cookie_name;
}
// console.log("csrf_cookie_name:", csrf_cookie_name);

// 删除原来的csrf头
pm.request.removeHeader("X-CSRFToken");
// 添加header
pm.request.addHeader(`X-CSRFToken:${csrf}`);


//创建一个cookie容器
const cookieJar =pm.cookies.jar();

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

function deleteCookie(domain, cookieName) {
    return new Promise((resolve, reject) => {
        //删除cookie中的cookieName,参数: url,cookieName,回调函数function(异常)
        cookieJar.unset(domain, cookieName, function (error) {
            // console.log(`删除 ${cookieName} cookies`);
            // console.log("error", error);
            if (error) {
                reject(error);
            } else {
                resolve();
            }
        });
    });
}

async function checkAndSetCookie(domain, cookieName, csrf) {
    // 睡眠10毫秒
    await sleep(10);

    // 查看 Cookie 是否存在
    cookieJar.get(domain, cookieName, function (error, cookie) {
        console.log("查看");
        console.log("cookie", cookie);
        // console.log("error", error);

        if (!cookie) {
            // 如果没有找到 Cookie,设置它
            console.log("未找到 Cookie,开始设置");
            cookieJar.set(domain, cookieName, csrf, function (error, cookie) {
                console.log(`设置 ${cookieName} Cookie 为 ${cookie}`);
                // console.log("cookie", cookie);
                // console.log("error", error);

                // 设置完成后再次调用检查函数
                checkAndSetCookie(domain, cookieName, csrf);
            });
        } else {
            // 如果找到 Cookie,输出成功信息
            console.log("Cookie 已存在,结束");
        }
    });
}

(async function() {
    try {
        // 首先删除 Cookie
        await deleteCookie(domain, csrf_cookie_name);
        // 然后开始检查和设置 Cookie
        checkAndSetCookie(domain, csrf_cookie_name, csrf);
    } catch (error) {
        console.error("删除 Cookie 失败:", error);
    }
})();
相关推荐
ShineWinsu5 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
szp20058 小时前
Cache API 会丢掉 URL 里的 #:我的 9 个模型分块一直写在同一条缓存上
javascript·浏览器
keyipatience9 小时前
TypeScript学习(1)
前端·javascript·学习·typescript·html·css3
xifangge202510 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
honkun610 小时前
vue 表格组件 vxe-table 修改滚动条样式,修改滚动条样式,统一宽度、颜色与自动隐藏
前端·javascript·vue.js
FRing0311 小时前
JavaScript入门到精通二十四(正则表达式、元字符、修饰符)
开发语言·前端·javascript·正则表达式
大明二代11 小时前
从 RAG 到有记忆的 Agent:Mastra Memory 与 PostgreSQL 实战
前端·javascript·人工智能
小羊没烦恼!12 小时前
C#综合揭秘——Entity Framework 并发处理详解
java·开发语言·前端·javascript·数据库·mysql·c#
weihubeats12 小时前
10 MB 的 Postman 替代品,启动不到 1 秒
测试工具·postman
OpsEye13 小时前
模型能力波动怎么办?网关侧做模型质量监控与自动切换
javascript·ai编程