Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрет прямого доступа к файлу
 
 автор: ZooM (ССС)   (11.07.2006 в 10:24)   письмо автору
 
 

Привет!
Появилась такая проблемка.
имеется 2 файла : index.php и frame.php
лежат эти файлы так :
http://site/dat/index.php
и
http://site/fram/frame.php
----
Нужно сделать так чтобы при переходе на http://site/fram/frame.php содержимое данной страницы не отображалось а выдавалась например ошибка или еще что.
а если вписать в http://site/dat/index.php :
<iframe src=/fram/frame.php width=500 height= 300>
То содержимое http://site/fram/frame.php отобрадалось.
?????

   
 
 автор: Trianon   (11.07.2006 в 10:41)   письмо автору
 
   для: ZooM (ССС)   (11.07.2006 в 10:24)
 

Отображение изменить можно, если привлечь JS. Т.е. поместив внутрь frame.php что-то вроде

<script> document.writeln(top != window
     ? "In frame structure"
     : "Without frame structure"
     ); </script>

А сам код фрейма - в одну из строк.

А запретить обращение совсем не удастся.

   
 
 автор: ZooM (ССС)   (11.07.2006 в 11:08)   письмо автору
 
   для: Trianon   (11.07.2006 в 10:41)
 

а еще варианты есть ???

   
 
 автор: Trianon   (11.07.2006 в 11:17)   письмо автору
 
   для: ZooM (ССС)   (11.07.2006 в 11:08)
 

Без привлечения JS? Сомневаюсь.
Насколько я понимаю, других вариантов выяснить где выполняется код, просто нет.

   
 
 автор: valenok   (11.07.2006 в 12:42)   письмо автору
 
   для: Trianon   (11.07.2006 в 11:17)
 

А чем сессии не нравятся.
Удалять из в конце выполнения скрипта и всё.

   
 
 автор: Trianon   (11.07.2006 в 13:03)   письмо автору
 
   для: valenok   (11.07.2006 в 12:42)
 

а как отличить, откуда произошел вызов? Может пользователь Ctrl-N нажал, и адрес фрейма руками вбил?

   
 
 автор: valenok   (11.07.2006 в 14:36)   письмо автору
 
   для: Trianon   (11.07.2006 в 13:03)
 

Поэтому в конце выполнения удаляем сессию..

   
 
 автор: valenok   (11.07.2006 в 15:06)   письмо автору
 
   для: Trianon   (11.07.2006 в 13:03)
 

Прав. Чёт я забыл что второй скрипт исполняется когда первый уже заканчивается..

   
 
 автор: valenok   (11.07.2006 в 12:43)   письмо автору
 
   для: Trianon   (11.07.2006 в 11:17)
 

Хотя это не имеет никакого отношения к определению места исполнения скрипта.
Только порблема в том что если привлечь javascript это значит что пользователь уже получил страницу.

   
 
 автор: ZooM (ССС)   (11.07.2006 в 13:46)   письмо автору
 
   для: valenok   (11.07.2006 в 12:43)
 

по крайней мере чувак предложил реальный пример ежели ты валенок.
задача заключалась в том что надо было просто хоть как то защитить страницу от прямого вызова.
Trianon - спасибо!

   
 
 автор: Jura   (11.07.2006 в 14:07)   письмо автору
 
   для: ZooM (ССС)   (11.07.2006 в 13:46)
 

Извини уважаемый ZooM, но если хочешь сделать хороший сайт с хорошей защитой, то сразу забудь про js
Во-первых, код открытый, зашифровать не удастся, так как дешифровщик придется в него же пихать.
во-вторых, алгоритмы получения ссылок доступны невооружонным взглядом.
в-третьих, весь доступ надо обрабатывать через скрипт системы безопасности.

К примеру, концепция такой системы:
1. База данных со списком всех файлов в каталогах сайта
2. Скрипт который проверяет наличие файла в этом списке и права на прямое использование ФАЙЛА.
Если этот скрипт находит файл в базе и к нему разрешен доступ, то он берет и подклюбчает его через абсолютный include, иначе либо вывод сообщения об ошибке и высвечивание главной или предыдущей страницы, откуда пользователь пришел.

3. С mod_rewrite делается полный редирект на скрипт проверки. Хоть и получится поголовная цикличность, но зато надежнее.

   
 
 автор: valenok   (11.07.2006 в 15:07)   письмо автору
 
   для: ZooM (ССС)   (11.07.2006 в 13:46)
 

Помогло вот это: echo $_SERVER['HTTP_REFERER'];
По нему и проверяйте..

   
 
 автор: ZooM (ССС)   (11.07.2006 в 17:43)   письмо автору
 
   для: valenok   (11.07.2006 в 15:07)
 

это конает если пользователь пришел с какой нить страницы, а если он пошел на фреймовую страницу прямо с index.php
то тогда отобразиться.
---
на счет защиты. это мне просто так было интересно на своем сайте я фреймы внедрять не собираюсь.

   
 
 автор: valenok   (11.07.2006 в 17:49)   письмо автору
 
   для: ZooM (ССС)   (11.07.2006 в 17:43)
 

У меня по фреймам http_referer отработал по нормальному.

   
 
 автор: ZooM (ССС)   (12.07.2006 в 10:51)   письмо автору
 
   для: valenok   (11.07.2006 в 17:49)
 

приведи сожержимое обоих страниц. может у тебя там как то вымужрено сделано.

   
 
 автор: valenok   (12.07.2006 в 12:37)   письмо автору
 
   для: ZooM (ССС)   (12.07.2006 в 10:51)
 

А.пхп
--
<FRAMESET >
<frame src='b.php'>
</frameset>

б.пхп
--
<? echo $_SERVER['HTTP_REFERER']; // Выдал: http://tmp/a.php

   
 
 автор: Владимир22   (12.07.2006 в 13:57)   письмо автору
 
   для: valenok   (12.07.2006 в 12:37)
 

Это можно сделать так. Надо фрейм как-то назвать, например

<iframe name="demo">

А потом в него вставить скрипт:

<Script>
if (window.name != 'demo') { 
window.close();
}
</Script>

Скрипт желательно вывести в отдельный файл.
Т.о. любые попытки открыть страницу в любом другом окне , приводят к закрытию этих окон. Или можно перенаправлять на другие страницы.

   
 
 автор: valenok   (12.07.2006 в 16:27)   письмо автору
 
   для: Владимир22   (12.07.2006 в 13:57)
 

Пользователь уже получил страницу..

[поправлено модератором]

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования