如何在JS中接收字符串(可能是通过警报),而用户无法事先看到它(例如,在源代码中)? 您可能已经从Geocaching Checkers知道了这一点,他们如何确保真正的坐标不会在源代码中或任何地方出现? 我有一个Web服务器,对JS和HTML有一些基本的了解,我读过有关PHP和AJAX的信息,但是我还没有找到解决问题的方法。 我的目标是仅在用户完成我的网站上的条件时才显示信息,这是至关重要的,这是以前从未见过的。 我尝试使用单独的PHP文件:
<?php
$koords = "N 53° 13.869 E 10° 22.716";
?>
但是我如何在JS中接收此变量,并且用户可以看到php文件?
答案 0 :(得分:2)
在您的浏览器(JS)中,具有JS知识的人将始终可以看到它。
您唯一可以做的就是设置一个服务器,该服务器评估您的用户是否满足完成挑战的条件。一旦服务器识别出挑战已完成,它将把您的秘密发回给客户端,以便可以在此向用户显示。设置服务器的方式以及使用哪种语言或框架/工具(例如PHP)取决于您的背景和您托管网站的环境。
添加一些细节:您将要在JS中发出Http请求,以某种方式将用户输入发送到服务器(例如PHP)。如果内容很简单,则可以使用¶meter=foo
将其添加到url本身,否则您可能会发送发布请求,并将数据作为JSON正文发送。然后,您需要评估PHP中的参数,如果该参数满足挑战的要求,则您会在回复中以您的机密回答客户,如果不是,则使用诸如重试的消息。
答案 1 :(得分:0)
好的,这就是我所做的,以帮助看到此问题的任何人。 该方法很容易“破解”,所以不要用它来隐藏实际的敏感数据,这更容易阻碍源代码中发生的事情。 我创建了一个看起来像这样的PHP
<?php
$secret = "data";
$givesecret = $_GET['givesecret'];
if ($givesecret>0) {
echo $secret;
}
?>
然后,当我需要秘密信息时,我让JS通过XHR调用PHP
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