【问题标题】:How to validate a trusted client in a endpoint如何验证端点中的受信任客户端
【发布时间】:2021-10-26 08:24:56
【问题描述】:

我有一个网站,我在浏览器中向端点发送 POST 请求,其中包含有关该页面中用户访问交互的一些信息。 javascript 浏览器代码为用户访问生成一个 UUID,当用户与页面交互时,我发送带有更新访问信息的 POST 请求。

在后端,我将此访问信息保存到数据库中。在后端服务中,我正在验证请求的主机是我的网页,也是一个有效的用户代理。但这很容易被 curl、邮递员或任何修改主机和用户代理头文件的东西劫持。由于服务是公开的,因为浏览器需要将信息发送到后端,我该如何实现方法、签名或其他任何东西来确保后端接收到的内容来自我的网页,并且没有其他人向该端点发送访问信息没有在网页中生成?

【问题讨论】:

    标签: php api curl http-post


    【解决方案1】:

    如果在您的表单中,您创建了一个隐藏输入,该输入具有您在会话中传递的值。当您发布请求时,您检查发布的值是否等于会话中的变量。 例如:

    文件1.php

    <?php
    $myvalue = uniqid();
    $_SESSION['myvalue'] = $myvalue;
    ?>
    <form action="File2.php">
    <input type="hidden" id="var1" name="var1" value="<?php echo $myvalue; ?>" />
    </form>
    

    然后在收到 post 请求的文件中: 文件2.php

    <?php
    if (isset($_POST['var1']) and isset($_SESSION['myvalue'] and $_POST['var1']==$_SESSION['myvalue']) {
    // ok
    }
    else {
    //not ok
    }
    ?>
    

    【讨论】:

      【解决方案2】:

      添加验证码:https://developers.google.com/recaptcha/docs/v3

      几乎不可能以任何其他方式发送数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-05
        • 1970-01-01
        • 2020-04-20
        • 2012-07-03
        • 1970-01-01
        • 2012-03-19
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多