【问题标题】:Conceal URL in javascript code ( URL generated by PHP )在 javascript 代码中隐藏 URL(由 PHP 生成的 URL)
【发布时间】:2017-07-29 13:07:47
【问题描述】:

我正在寻找以下问题的解决方案:

我有一段 JS 代码,它执行重定向到使用 PHP 构建的 URL,并且该重定向仅在用户按下确认对话框上的按钮时完成。

代码如下:

function one() {
    window.location.replace("<?php 

if($new_redir == "1")  {

echo "$new_second_redirect_URL/?token=$hash";

}

else  {

echo "$second_redirect_URL/?token=$hash";

}

?>");
}

它工作得很好。我想做的是隐藏用户打开页面时源代码中显示的 URL。

最好的方法是什么?

【问题讨论】:

  • 如果你隐藏了 url,浏览器怎么知道去哪里?没有有效的方法来做你想做的事,需要另一种方法。
  • 检查这个问题的答案stackoverflow.com/questions/42712426/…
  • 我最想做的是确保自动机器人无法通过扫描页面的源代码直接获取该 URL。合法的人类访客不是我的问题。据我所知,机器人无法解释 javascript - 所以我想确保 URL 保持混淆,甚至更好地隐藏,如果他们只是扫描页面的源代码。

标签: javascript php url


【解决方案1】:

说实话,你想太多了。

如果他们想避开确认屏幕并从源头获取 URL,那么您无能为力。

最好的方法可能是在确认时执行 AJAX 请求,并从响应中获取基于 CSRF 令牌的 URL 并使用它,但这也可能最终过头了。

您还可以将其制成带有一些隐藏字段(同样,例如 CSRF 令牌)的实际 &lt;form&gt;&lt;/form&gt; 表单,然后执行点击后验证。如果成功 - 重定向它们。

更新:

使用 robots.txt 阻止机器人 使用 JS 构建 QS 以阻止大多数机器人,例如:

var csrftoken='XJIWHEOU324uipHFOFUHR'; 
var url="http://url.com/page.php?token="; 
url=url+csrftoken;

你也可以做的,实际上就像我们一样,虽然对于你的用例来说可能太多了。 将每个页面加载记录到数据库中,并在确认后检查他们是否是该页面的首次访问者。

AJAX 调用(jQuery 示例):

$.post( "url_to_backend_page_to_get_url", {hasSubmittedForm:"true"}, function( data ) {
 window.location.href = data;
});

【讨论】:

  • 我最想做的是确保自动机器人无法通过扫描页面的源代码直接获取该 URL。合法的人类访客不是我的问题。
  • 使用 robots.txt 启动。但是,是的,如果您使用 CSRF 令牌,它们几乎会被卡住。从这个意义上说,您实际上可以做的是使用 JS 将 URL 添加到一起,例如 var csrftoken='XJIWHEOU324uipHFOFUHR'; var url="http://url.com/page.php?token="; url=url+csrftoken;'。由于几乎没有任何人可以解析 JS,因此机器人会立即被卡住。那些可以的,尝试没有意义。
  • 我已经更新了我的答案 - 这是一个非常薄弱的​​例子,我建议添加一些位,因为我对你的系统是如何构建的一无所知
  • 感谢您的帮助 - 我最终所做的是将要重定向到的页面的 URL 分为 2 个变量 - URL 本身和我通过 PHP 发出的安全令牌,然后用 JS concat 连接它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
相关资源
最近更新 更多