Передайте строку безопасно для JS

Как получить строку в JS (возможно, через предупреждение), чтобы пользователь не смог ее увидеть заранее (например, в исходном коде)? Вы, наверное, знаете это из Geocaching Checkers, как они защищают реальные координаты от просмотра в исходном коде или где-либо еще? У меня есть веб-сервер и некоторые базовые знания JS и HTML, я читал о PHP и AJAX, но пока не нашел решения своей проблемы. Моя цель - раскрыть информацию только в том случае, если пользователь выполнил условие на моем веб-сайте, и важно, чтобы его не видели раньше. Я попытался использовать отдельный файл PHP:

<?php
    $koords =  "N 53° 13.869 E 10° 22.716";
?>

но как мне получить эту переменную в JS и может ли пользователь увидеть файл php?

2 ответа

Решение

В вашем браузере (JS) он всегда будет доступен для просмотра тем, кто обладает знаниями JS.

Единственное, что вы можете сделать, - это настроить сервер, который оценивает, выполнил ли ваш пользователь условие для выполнения задания. Как только сервер распознает вызов как выполненный, он отправит ваш секрет клиенту, чтобы он мог отображаться там для пользователя. От того, как вы настроили этот сервер, и от того, какой язык или фреймворк / инструменты (например, PHP), зависит от вашего фона и среды, в которой вы будете размещать свой сайт.

Добавим немного подробностей: вы захотите сделать запрос Http в вашем JS, каким-то образом отправляя пользовательский ввод на сервер (например, PHP). Если это простой контент, вы можете добавить его в URL с помощью &parameter=fooиначе вы, скорее всего, отправите запрос на публикацию и отправите свои данные в виде тела JSON. Затем вам нужно будет оценить параметр в вашем PHP, и, если он соответствует требованию вызова, вы ответите клиенту в своем ответе своим секретом или, если нет, сообщением типа повторить попытку.

Хорошо, вот что я сделал, чтобы помочь любому, кто видит это. Этот метод легко "взломать", поэтому не используйте его, чтобы скрыть реальные разумные данные, это скорее препятствие, чтобы легко увидеть в исходном коде, что происходит. Я создал PHP, похожий на этот

<?php

$secret =  "data";
$givesecret = $_GET['givesecret'];

if ($givesecret>0) {
    echo $secret;
}
?>

Затем, когда мне нужна секретная информация, я позволяю моему JS вызывать PHP через XHR.

var rndvar = 0;
//something is done in a loop
rndvar++;
//now something is completed and i want to reveal the secret
var xhr = new XMLHttpRequest();
            xhr.open("GET", "containssecret.php?givesecret="+rndvar);
            xhr.onreadystatechange = function()
            {
                if(xhr.readyState == 4 && xhr.status == 200) {
                    alert(xhr.responseText);
                }
            }
xhr.send();

Довольно простой, и очевидным недостатком является, конечно, я мог бы позвонить по https://www.mywebsite.org/containssecret.php?givesecret=5 и он сразу же даст секрет, поэтому цель состоит в том, чтобы назвать все меньше очевидно и не дает понять, каковы критерии в PHP (здесь это int больше нуля). Но всегда можно будет это выяснить, если вы знаете какой-то код, это просто простой способ запутать, и он только относительно безопасен от обычных пользователей. Для моей цели этого вполне достаточно:-D

Другие вопросы по тегам