|
|
|
|
|
для: cheops
(03.01.2012 в 19:50)
| | . | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 19:22)
| | Я к тому, что пользователь очень редко помнит на изучить пути к JS/CSS файлам, он скорее всего сначала все-таки откроет HTML/PHP, чтобы посмотреть путь, а это запустит механизм доступа. Так как домен не меняется, то сессия останется в порядке и будет работать так, как для обычно страницы. | |
|
|
|
|
|
|
|
для: cheops
(03.01.2012 в 16:20)
| | У нас же задача - проконтролировать, что скрипт вызван не из адресной строки, а посредством
<script type="text/javascript" src="hide.php"></script>
|
Вот этот контроль мы здесь и осуществляем с помощью флага.
За счет этого контроля невозможно прочитать отображаемое содержимой файла grenada.php, запустив его через браузер из адресной строки, ибо в этом случае оно скрыто.
А когда этот файл вызывается в теле основной HTML/PHP страницы, то содержащийся в файле grenada.php JS код просто исполнится, но в HTML коде страницы его не видно, поскольку это директивы самому браузеру. | |
|
|
|
|
|
|
|
для: Владимир55
(03.01.2012 в 11:46)
| | Все равно не понимаю, пользователь сначала откроет HTML/PHP, все загрузиться, заполняться переменные $_SESSION['start'] и $_SESSION['start_old'], посмотрит исходный код и обратиться к grenada.php, время будет опять другое и все ему должно выдастся. Он же в этом же самом браузере скорее всего будет код просматривать. Вот с другого сайта использовать ваши скрипты уже не смогут (вы, кстати, сами в такую ситуацию можете попасть, если будете производить горизонтальное масштабирование). | |
|
|
|
|
|
|
|
для: deimand
(03.01.2012 в 14:07)
| | Высший пилотаж! | |
|
|
|
|
 23.6 Кб |
|
|
для: Владимир55
(30.12.2011 в 19:28)
| | Скрипт лучше держать в файле css, тогда при просмотре сети на него возможно не обратят внимания.
.htaccess
AddHandler application/x-httpd-php .css
|
index.php
<?php
session_start();
?><html>
<head>
<title></title>
</head>
<body>
<?php
$_SESSION['javascript'] = true;
?>
<script>
// этот скрипт желательно получше запрятать
var script=document.createElement('script');
script.setAttribute('type','text/javascript');
script.setAttribute('src','comments.css');
// применить скрипт
document.body.appendChild(script);
// сразу же уничтожить примененный тег script
document.body.removeChild(script);
</script>
<a href="index.css">Теперь посмотреть скрипт</a>
</body>
</html>
|
comments.css
<?php
session_start();
if (isset($_SESSION['javascript']))
{
// обязательно блокировать последующие обращения
unset($_SESSION['javascript']);
// сам скрипт
?>
alert('Все работает! И до этого скрипта просто так не добраться)');
<?php
}
else
{
// с понтом на jquery
// лучше держать экземпляр у себя на сервере, вдруг по этому адресу ее удалят
echo file_get_contents('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.01.2012 в 00:34)
| | На главном HTML/PHP-файле проинклюдил
<?php
// Посылаем в сессии время открытия страницы
ob_start();
session_start();
$_SESSION['start'] = time ();
echo chr(13).chr(10) . '<script type="text/javascript" src="grenada.php"></script>';
|
А в файле grenada.php
<?php
// Скрипт формирования защитного кода
// В сессии получаем время запуска скрипта с тематической страницы.
// Если это время совпадает со временем предыдущего вызова, то имеет место
// самостоятельный запуск этого файла из адресной строки с целью считывания защитного кода
// В этом случае код не показывается.
ob_start();
session_start();
$start = $_SESSION['start'];
$start_old = $_SESSION['start_old'];
if ($start == $start_old) $flag = "VZLOM";
else $flag = "NO";
$_SESSION['start_old'] = $start;
if ($flag == "NO") // Защита используется по назначению. Продолжаем.
|
| |
|
|
|
|
|
|
|
для: Владимир55
(02.01.2012 в 23:52)
| | Ммм... не очень понятно. Допустим мы в главном HTML/PHP-файле поставили метку, браузер начинает загружать скрипты из <script> и вы при обращении к этим файлам видите, что они загружаются позже. Но так ведь если пользователь откроет HTML/PHP-файл, посмотрит исходный код и вызовет скрипт - вы тоже зафиксируете более позднюю временную метку... | |
|
|
|
|
|
|
|
для: cheops
(31.12.2011 в 13:00)
| | Показалось интересным такое решение.
В вызывающем файле заносим в сессию время вызова (можно в мкс), а в скрипте его сравниваем с тем, какое было при предыдущем вызове.
Если значения совпадают, то это значит, что файл открывают из адресной строки.
(Если браузер закрывали, то совпадают нулевые значения. Если хотя бы одна копия остается открытой, то совпадают последний значения из вызова через <script>).
Вроде, работает... | |
|
|
|
|
|
|
|
для: deimand
(31.12.2011 в 01:44)
| | >В моем случае мозиллы, значит в Programm Files/Mozilla Firefoz, правильно?
Вряд ли там, про Mozilla не скажу, а Opera хранит примерно тут
Documents and Settings/User/Local Settings/Application Data/Opera/Opera/opcache
Для FireFox, нужно рыться примерно тут
Documents and Settings/User/Local Settings/Application Data/Mozilla/Firefox/Profiles/ - по-крайней мере JavaScript-ы я там вижу (понятно они идут вперемешку с изображениями и по названию файла сориентироваться не удасться, но поискать там стоит). | |
|
|
|
|