首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >csrf令牌正在更改不应更改的位置

csrf令牌正在更改不应更改的位置
EN

Stack Overflow用户
提问于 2021-05-06 02:53:22
回答 1查看 23关注 0票数 0

我正在运行下面的代码以防止CSRF漏洞

代码语言:javascript
复制
if (!isset($_POST['_token'])) {
    $_SESSION['_token'] = bin2hex(random_bytes(20));
}

并且我在名为_token的隐藏输入中使用了令牌。我在main.js文件中使用了以下代码,以便用户可以将产品添加到他们的收藏夹中。

代码语言:javascript
复制
const wishlist = {
    'add': function (id) {
        $.ajax({
            url: 'api/wishlist?method=add',
            type: 'post',
            dataType: 'json',
            data: 'id=' + id + '&_token=' + $('input[name="_token"]').val(),
            success: function (response) {
                 console.log(response)
            }
        })
    },
    'remove': function (id) {
        $.ajax({
            url: 'api/wishlist?method=remove',
            type: 'post',
            dataType: 'json',
            data: id,
            success: function (response) {
                console.log(response)
            }
        })
    }
};

下面是用wishlist.php编写的代码,ajax请求将发送到该代码

代码语言:javascript
复制
<?php
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    header('Location:' . site_url('404'));
}
if (!isset($_POST['_token']) or $_POST['_token'] != $_SESSION['_token']) {
    die('Invalıd CSRF Token!');
}

if ($_GET['method'] == 'add') {
    $json['method'] = "adding to favorites";
}
if ($_GET['method'] == 'remove') {
    $json['method'] = "removeing from favorites";
}

所有的代码都是这样的,但有时这段代码会工作,有时它会给出无效的csrf令牌错误,有时它会工作3-5次,然后再次出现错误。

EN

回答 1

Stack Overflow用户

发布于 2021-05-06 05:27:18

我找到了解决方案。这是因为客户端正在尝试访问不存在文件,以便请求者执行init.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67407189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档