Возможна ли блокировка прямого доступа с помощью свойства javascript top.location? - PullRequest
4 голосов
/ 11 сентября 2011

Внутри моей 1-й страницы есть IFrame, который загружает другую страницу, и я не хочу, чтобы к ней обращались напрямую. Поэтому я подумал, может быть, я могу быть уверен, что 2-я страница загружается внутри 1-й, если я проверяю top.location на 2-й странице и делаю все как обычно, если он равен URL-адресу 1-й страницы, или запоминаю пользователя как хакера, если это не так.

Вот код:

1-я страница:

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

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

</html>

2-я страница:

<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 ]

2 голосов
/ 11 сентября 2011

Ну, вы можете использовать JSP. Пусть ваша вторая страница будет недоступна для прямого доступа в папку WEB-INF вашего проекта, а затем на главной странице сделайте jsp: forward к этому ресурсу. Таким образом, 2-я страница никогда не будет доступна напрямую.

1 голос
/ 11 сентября 2011

top.location, HTTP реферер и все можно легко подделать. Нет смысла пытаться создавать проверки безопасности на стороне клиента.

Вместо этого вам следует сосредоточиться на том, чтобы сделать код устойчивым с помощью сеансов и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...