所以我想要做的是在外部网站(例如:externalsite.com)上有一个链接到mywebsite.com/page.php,我只需要点击链接externalsite.com将允许您访问mywebsite.com/page.php。 用户不能简单地在他们的浏览器中输入它来实现目标,我将如何做到这一点?
答案 0 :(得分:3)
没有办法以100%安全的方式执行此操作。浏览器通常会发送Referrer
标头,每个请求都会指定使用的来源,但这很容易被伪造。
如果可能的话,我建议让externalsite.com
向mywebsite.com
上经过身份验证的Web服务发出请求,要求提供一个令牌,该令牌附加到链接上且到期时间合理短(足够长时间允许用户点击链接,但不能太长,以至于可以在周围共享)。然后,当mywebsite.com
上的页面加载时,它应该检查有效的令牌。
答案 1 :(得分:1)
你真的不能100%安全,并且(可能)肯定没有链接(除非你使用JavaScript在下面的方法1中提交带有链接的表单)。但是有一些方法可能对你有用。
您可以使用按钮向该页面提交表单(就是这样 - 只需按钮),然后在页面上检查是否提交了正确的表单。但这仍然不是万无一失的。
外部网站:
<form action="http://mywebsite.com/page.php" method="post">
<input type="hidden" name="pagesecuredsdjp91dx9x8yhr4kbbki" />
<input type="submit" value="Click here" />
</form>
page.php
的顶部:
<?php
if(!$_POST['pagesecuredsdjp91dx9x8yhr4kbbki']) {
die("Sorry, you cannot access this page.");
}
else {
//continue page
}
?>
我认为你不能只是建立一个链接。
在网址中传递变量,但这是不推荐,因为用户可以将其添加到网址中以进入。
page.php
的顶部:
<?php
if(!$_GET['securedpageaccess']) {
die("Sorry, you cannot access this page");
}
else {
//continue page
}
?>
外部网站:
<a href="http://mysite.com/page.php?securedpageaccess=sdjp91dx9sdjp9sdjp91d8ybbkix8yhr4kbbki">Cick here</a>
网址中的随机字符只是放在那里的东西,不是强制性的。
如果您使用其中任何一种方法,我建议使用第一种方法。
我希望这会有所帮助。
答案 2 :(得分:1)
鉴于没有任何方法100%安全,我将向您展示一个非常简单,过于不安全的方法,它可以在任何框架中工作,因为它是纯JavaScript。请记住,这只是作为一般规则工作,绝不是“黑客证明”。
只需将此脚本添加到mywebsite.com/page.php
即可。它将重定向externalside.com
上未被页面引用的任何请求。
var referrer = document.referrer;
referrer = referrer.toLowerCase();
if (referrer.indexOf("/externalsite.com") == -1) && referrer.indexOf(".externalsite.com") == -1) {
window.location.href = "http://mysite.com/accessdenied.php"
} else {
document.findElementById("myBody").style.display = "block";
}
要绕过整个“如果您禁用JavaScript,这不起作用,您就是白痴”两难,将id="myBody" style="display: none;"
添加到您网页的<body>
标记:页面除非启用JavaScript并验证引用URL,否则不会显示。另外,我不是白痴。
有几种方法可以绕过这种方法:欺骗引用网址,使用FireBug删除display: none
,查看网页来源并在本地计算机上重新创建它等等。这种方法更具有威慑力而不是安全功能。
答案 3 :(得分:0)
之前我已经处理过一个系统,它为合作伙伴网站提供了一个链接,这个链接用于生成一个新的临时链接供用户重定向到。 第一个链接(不是临时链接)只能由授权的IP地址访问。这意味着只有合作伙伴网站站点才能使用该链接。