簡體   English   中英

將字符串安全地傳遞給JS

[英]Pass string securely to JS

我如何在JS中接收字符串(可能是通過警報),而用戶卻無法事先看到它(例如,在源代碼中)? 您可能已經從Geocaching Checkers知道了這一點,他們如何確保真正的坐標不會在源代碼中或任何地方出現? 我有一個Web服務器,對JS和HTML有一些基本的了解,我讀過有關PHP和AJAX的信息,但是我還沒有找到解決問題的方法。 我的目標是僅在用戶完成我的網站上的條件時才顯示信息,這是至關重要的,這是以前從未見過的。 我嘗試使用單獨的PHP文件:

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

但是我如何在JS中接收此變量,並且用戶可以看到php文件?

在您的瀏覽器(JS)中,具有JS知識的人將始終可以看到它。

您唯一可以做的就是設置服務器,該服務器評估您的用戶是否滿足完成挑戰的條件。 一旦服務器識別出挑戰已完成,它將把您的秘密發送回客戶端,以便可以在此向用戶顯示。 如何設置該服務器以及使用哪種語言或框架/工具(例如PHP)來設置服務器取決於您的背景以及您將在其中托管網站的環境。

添加一點細節:您將需要在JS中以某種方式向服務器(例如PHP)發送用戶輸入來發出Http請求。 如果是簡單內容,則可以使用&parameter=foo將其添加到url本身中,否則您可能會發送發布請求並將數據作為JSON正文發送。 然后,您將需要評估PHP中的參數,如果該參數滿足挑戰的要求,您將在響應中以秘密或沒有的消息(例如重試)答復客戶端。

好的,這就是我所做的,以幫助看到此問題的任何人。 該方法很容易“破解”,所以不要用它來隱藏實際的敏感數據,這更容易阻礙源代碼中發生的事情。 我創建了一個看起來像這樣的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM