如何建立到我网站上页面的安全链接?

时间:2011-09-19 02:28:38

标签: php html https

所以我想要做的是在外部网站(例如:externalsite.com)上有一个链接到mywebsite.com/page.php,我只需要点击链接externalsite.com将允许您访问mywebsite.com/page.php。 用户不能简单地在他们的浏览器中输入它来实现目标,我将如何做到这一点?

4 个答案:

答案 0 :(得分:3)

没有办法以100%安全的方式执行此操作。浏览器通常会发送Referrer标头,每个请求都会指定使用的来源,但这很容易被伪造。

如果可能的话,我建议让externalsite.commywebsite.com上经过身份验证的Web服务发出请求,要求提供一个令牌,该令牌附加到链接上且到期时间合理短(足够长时间允许用户点击链接,但不能太长,以至于可以在周围共享)。然后,当mywebsite.com上的页面加载时,它应该检查有效的令牌。

答案 1 :(得分:1)

你真的不能100%安全,并且(可能)肯定没有链接(除非你使用JavaScript在下面的方法1中提交带有链接的表单)。但是有一些方法可能对你有用。

方法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
}
?>

我认为你不能只是建立一个链接。


方法2

在网址中传递变量,但这是不推荐,因为用户可以将其添加到网址中以进入。

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地址访问。这意味着只有合作伙伴网站站点才能使用该链接。