Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Как определить что скрипт запущен локально |

21.05.2009, 15:50
|
|
Новичок
Регистрация: 16.05.2009
Сообщений: 12
Провел на форуме: 57142
Репутация:
0
|
|
Как определить что скрипт запущен локально
Как сдалать проверку в PHP скрипте 1 что он запущен из скрипта 2, который находится на томже сайте
Т.е. нужно запретить запуск скрипта 1 удаленно и из других скриптов, если они используют хостинг, этого же сервера
if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR'])
предотвращает только удаленный запуск
|
|
|

21.05.2009, 17:01
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
В первом файле Во втором первыми строками:
PHP код:
if (!defined('l_include')) die;
|
|
|

21.05.2009, 17:34
|
|
Новичок
Регистрация: 16.05.2009
Сообщений: 12
Провел на форуме: 57142
Репутация:
0
|
|
Сообщение от Gifts
В первом файле Во втором первыми строками:
PHP код:
if (!defined('l_include')) die;
а что мешает воспользоваться хостингом на томже серваке и написать:
в чужом скрипте, а потом вызвать мой скрипт который должен быть запущен локально на моем хостинге?
|
|
|

21.05.2009, 19:22
|
|
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
Провел на форуме: 347573
Репутация:
185
|
|
Если ты никому не расскажешь, что у тебя константа для проверки называется "l_include" - то никто и не догадается, что надо именно ее объявить. А если уже прочли скрипт, например через file_priv в sql-inj - то тут практически никакая проверка не спасет
Вот еще мысль: Можно сделать проверку полного пути от корня сервера, чтоб быть уверенным что скрипт Б инклудят из скрипта в твоей папке. Например так:
PHP код:
<?
$docRoot = "/www/home/myfolder/public_html";
if($_SERVER["DOCUMENT_ROOT"] != $docRoot) die("You try to include my script from another fucking server");
// ...
?>
|
|
|

21.05.2009, 20:41
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
pretolock Не позволит нормально настроенный сервер/права на файл. Если злоумышленнику удалось заинклудить/прочитать исходный текст скрипта - ни одна защита не спасет (кроме быть может самописных библиотек-расширений ПХП)
-=Static=- На переменные нельзя надеяться. Например:
PHP код:
echo $_SERVER["DOCUMENT_ROOT"].'<hr>';
$_SERVER["DOCUMENT_ROOT"] = 'some trash dir';
echo $_SERVER["DOCUMENT_ROOT"];
|
|
|

21.05.2009, 20:47
|
|
Members of Antichat - Level 5
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
а делов то..
PHP код:
if ( $_SERVER['SERVER_NAME'] == 'localhost' OR
$_SERVER['SERVER_ADDR'] == '127.0.0.1') {
print 'local run';
} else {
print 'remote run';
}
|
|
|

21.05.2009, 21:15
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Угу, в своем скрипте перед инклудом твоего скрипта дописываешь
$_SERVER['SERVER_NAME'] = ....;
$_SERVER['SERVER_ADDR'] = ....;
И способ не работает
|
|
|

21.05.2009, 21:34
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
eLWAux Достаточно неожиданно, но условие будет выполняться всегда ^^ Во всяком случае server_addr  Да и вообще - зачем читать хотя бы первый пост до конца?
|
|
|

21.05.2009, 21:49
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Самый оптимальный вариант - вариант Gift
только я бы еще сделал както так:
PHP код:
<?php
/**
* @author m0hze
* @copyright 2009
*/
$rand = rand(1,6);
define(generate_def($rand),1);
function generate_def($number)
{
$arr = array('a','b','c','d','e','f',
'g','h','i','j','k','l',
'm','n','o','p','r','s',
't','u','v','x','y','z',
'A','B','C','D','E','F',
'G','H','I','J','K','L',
'M','N','O','P','R','S',
'T','U','V','X','Y','Z',
'1','2','3','4','5','6',
'7','8','9','0','.',',',
'(',')','[',']','!','?',
'&','^','%','@','*','$',
'<','>','/','|','+','-',
'{','}','`','~');
// Генерируем пароль
$def = "";
for($i = 0; $i < $number; $i++)
{
// Вычисляем случайный индекс массива
$index = rand(0, count($arr) - 1);
$def .= $arr[$index];
}
return $def;
}
?>
Вот только неподумал, как во второй скрипт передать загенеренную константу 
НУ может ктото другой придумает,но при таком раследе я непредставляю как ктото сможет угадать бдующую константу.
|
|
|

21.05.2009, 21:54
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
m0Hze Зачем угадывать? Инклудим файл с генератором, инклудим интересующий файл.
Опять таки - если есть возможность читать/инклудить чужой файл - бесполезно это баловство на чистом пхп
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|