对于一个有趣的项目,我想制作一个益智游戏,这是一系列谜语,答案是下一个级别的链接,一个Notpron。 我一直在用Javascript来处理这个问题,所以它可以有更多的互动元素。但是,任何人都可以查看JS源代码并立即找出下一个难题的链接。特别是如果我有类似的东西:
window.location.href = "levels/1.html"
如果我能以某种方式隐藏它会很好,但我看过的大多数混淆工具似乎很容易识别链接字符串的位置并对其进行解码。 Notpron通过只有线索导致用户手动输入URL到下一级别来解决这个问题,但我想远离那个。
就像我说的,这只是为了好玩。但我的问题是,是否有任何方法可以在网络上隐藏代码。我也愿意使用不同的工具。
答案 0 :(得分:4)
单独使用JavaScript,不是真的。另外,在那个级别进行混淆有点矫枉过正。
但是,如果您有一个运行任何其他语言的服务器端脚本,例如PHP,ASP等,您可以让JavaScript(通过AJAX请求)提交用户"回答& #34;对于谜语,如果它是正确的,它会将链接返回到下一个。
一个例子,使用jQuery:
$.post("/check_answer.php", { riddle: 2, answer: users_answer })
.done(function(response) {
if (response== "false") {
// display some error message
} else {
document.location = response;
}
});
答案 1 :(得分:1)
您可以做的是,使下一个问题的网址(或网址的路径部分)成为上一个问题的答案。所以推进游戏的唯一方法就是正确回答问题。
所以,如果问题的答案是'谷歌'。下一个问题的网址可能是:http://mypuzzle.com/google
注意:为了安全起见,我会对答案进行base64编码。 'google',将成为'Z29vZ2xl',因此网址将成为http://mypuzzle.com/Z29vZ2xl
答案 2 :(得分:1)
正如其他人所说,你无法100%阻止某人查看您的代码,但似乎您希望停止快速查看源并查看URL。一个简单的ceasar转换会为你混淆字符串。你可以把它当作某种jQuery函数来甩掉随便的一瞥
function jQuery148951(s, n) {
return {
val: function() {
return s.split("").map(function(char) {
return String.fromCharCode(char.charCodeAt(0) + n)
}).join("")}
}
}
...
>jQuery148951("levels/1.html",-2).val()
"jctcjq-/,frkj"
...
window.location.href = jQuery148951("jctcjq-/,frkj",2).val()
或者为了降低复杂性,pandavenger建议您可以使用window.atob和window.bota
>btoa("levels/1.html")
"bGV2ZWxzLzEuaHRtbA=="
...
window.location.href = atob("bGV2ZWxzLzEuaHRtbA==")
答案 3 :(得分:0)
您可以使用ajax和服务器端语言来检查答案并发回回复。回复可以说他们错误的消息或说他们是正确的,并给他们一个链接到下一个难题。