Передайте строку безопасно для JS - PullRequest
0 голосов
/ 30 августа 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Хорошо, вот что я сделал, чтобы помочь любому, кто видит это. Этот метод легко "взломать", поэтому не используйте его, чтобы скрыть реальные разумные данные, это скорее препятствие, чтобы легко увидеть в исходном коде, что происходит. Я создал 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 (здесь он больше нуля). Но всегда можно будет это выяснить, если вы знаете какой-то код, это просто простой способ запутать, и он относительно безопасен от обычных пользователей. Для моей цели этого вполне достаточно: -D

0 голосов
/ 30 августа 2018

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

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

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

...