Как я могу помешать другим отправлять сообщения, запрашивающие мой php - PullRequest
1 голос
/ 22 апреля 2020

У меня есть страница с именем index.php. Это содержит форму, которую пользователь отправляет. После отправки он проверяет ввод с verify-input.php и возвращает некоторую ключевую информацию обратно на index.php. Оттуда index.php отправлять запросы scanner.php ~ 100 раз. Все это делается без обновления index.php.

Мой вопрос: как я могу помешать другим веб-сайтам или другим людям отправлять сообщения с запросами verify-input.php и scanner.php? Я только хочу, чтобы люди могли вызывать эти файлы на моем веб-сайте (по сути, я не хочу, чтобы другие использовали мои verify-input.php и scanner.php API для собственной выгоды.

Я добавил код ниже для этих файлов, но я не думаю, что это имеет большое значение. Я довольно хорош в PHP, но я ужасен в javascript.


index. php

<script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<div class="display-error" style="display: none"></div>
<form>
  <label for="fname">Fruit (only correct input is: banana)</label><br>
  <input type="text" id="fruit-name" name="fruit" value="banana"><br>
  <button type="submit" id="submit" value="Submit">Submit</button>
</form>

<div id="results">
</div>

<script type="text/javascript">
$(document).ready(function() {


    $('#submit').click(function(e) {
        e.preventDefault();

        $("#submit").attr("disabled", true);
        $("#submit").html("Verifying Username");
        var fruitName = $("#fruit-name").val();

        $.ajax({
            type: "POST",
            url: "verify-input.php",
            dataType: "json",
            data: {
                fruitName: fruitName
            },
            success: function(data) {
                if (data.code == 200) {
                    $("#submit").html("Running Scan");
                    (async function() {
                        var fruitID = data.fruitId;
                        var min = 1;
                        while (min < 60) {
                            await scan(fruitID, min, min + 30);
                            min = min + 30;
                        }
                    $("#submit").html("Submit");
                    $("#submit").attr("disabled", false);
                    })();
                } else {
                    $("#submit").html("Submit");
                    $("#submit").attr("disabled", false);
                    $(".display-error").html("<ul>" + data.msg + "</ul>");
                    $(".display-error").css("display", "block");
                }
            }
        });


    });
});

function scan(vFruitId, min, max) {

    return $.ajax({
        type: "POST",
        url: "scanner.php",
        dataType: "json",
        data: {
            vFruitId: vFruitId,
            min: min,
            max: max
        },
        success: function(data) {
            data.forEach((item, idx) => {
                $("#results").append(`
                <div class="fruit-item" data-item="${idx}">
                    <div class="f-calories">calories: ${item.sweetness}</div>
                    <div class="f-sweetness">sweeteness: ${item.calories}</div>
                    <div class="f-bitterness">bitterness: ${item.bitterness}</div>
                </div><br>
              `);
            })
        }
    });

}

</script>

проверка-ввод. php

<?php

if (isset($_POST['fruitName'])) {
    echo(is_valid($_POST['fruitName']));
}

function is_valid($fruit) {
    // Verify post data is valid and correct
    $names = ['Banana cake', 'Banana pancake', 'Banana bread'];
    $colors = ['Yellow', 'Blue', 'Green', 'Purple', 'Black'];
    sleep(2);
    if ($fruit == "banana") {
        $result['code'] = 200;
        $result['fruitId'] = rand(1, 9999999);
        $result['msg'] = "YAY SUCCESS";
        $json = json_encode($result);
        return $json;
    }

    $result['code'] = 400;
    $result['msg'] = "ERROR! The correct fruit is banana";
    $json = json_encode($result);
    return $json;
}

сканер. php

<?php
ini_set('max_execution_time', '300');


define('MAX_SCAN', 30);

if (isset($_POST['vFruitId']) &&
    isset($_POST['min']) &&
    isset($_POST['max'])) {

    $result = roomscanner($_POST['vFruitId'], $_POST['min'], $_POST['max']);
    $json = json_encode($result);
    file_put_contents("result.txt", $json);
    echo($json);
}

function roomscanner($fruitId, $min, $max) {

    $result = [];

    $i = $min;
    while ($i < $max) {
        if ($i % 3 == 0) {
            $curr['sweetness'] = rand(20, 29);
            $curr['calories'] = rand(30, 39);
            $curr['bitterness'] = rand(30, 39);

            $result[] = $curr;
        }
        sleep(rand(0, 1));
        $i++;
    }

    return $result;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...