是否可以通过javascript top.location属性阻止直接访问?

时间:2011-09-11 14:59:18

标签: javascript iframe

我的第一页内有一个IFrame加载另一个页面,我不希望它直接访问。所以我想也许我可以确定第二页是在第一页中加载的,如果我检查第二页中的top.location并且如果它是相同的第一页URL那么正常,或者如果不是则记住用户为黑客。

以下是代码:

第一页:

<html>
<head>
<title>1st Page</title>
</head>

<iframe src="2nd Page" name="frame1" height="80%" width="100%"></iframe>

</html>

第二页

<script type="text/javascript">
    if(top.location == "1st Page URL") {
        // It's OK, Access is not direct
    } else {
        // It's not a normal access
    }
</script>  

似乎这段代码可以正常工作,但我不确定它是否万无一失。也许top.location可能是欺骗性的(如$_SERVER['HTTP_REFERER']),或者某种程度上它完全不可靠。我需要确定一下。

2 个答案:

答案 0 :(得分:2)

好吧,你可以使用JSP。将您的第二个页面,即永远不应被直接访问的页面置于项目的WEB-INF文件夹中,然后让主页面执行jsp:前进到该资源。这样就无法直接访问第二页。

答案 1 :(得分:1)

top.location,HTTP referer和所有内容都可以轻松欺骗。没有必要尝试构建客户端安全检查。

相反,你应该专注于使用会话等使你的代码健壮。