Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Как определить что скрипт запущен локально (https://forum.antichat.xyz/showthread.php?t=121658)

pretolock 21.05.2009 15:50

Как определить что скрипт запущен локально
 
Как сдалать проверку в PHP скрипте 1 что он запущен из скрипта 2, который находится на томже сайте
Т.е. нужно запретить запуск скрипта 1 удаленно и из других скриптов, если они используют хостинг, этого же сервера

if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR'])
предотвращает только удаленный запуск

Gifts 21.05.2009 17:01

В первом файле
PHP код:

define('l_include',1); 

Во втором первыми строками:
PHP код:

if (!defined('l_include')) die; 


pretolock 21.05.2009 17:34

Цитата:

Сообщение от Gifts
В первом файле
PHP код:

define('l_include',1); 

Во втором первыми строками:
PHP код:

if (!defined('l_include')) die; 


а что мешает воспользоваться хостингом на томже серваке и написать:
PHP код:

define('l_include',1); 

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

-=Static=- 21.05.2009 19:22

Если ты никому не расскажешь, что у тебя константа для проверки называется "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");

// ...
?>


Gifts 21.05.2009 20:41

pretolock Не позволит нормально настроенный сервер/права на файл. Если злоумышленнику удалось заинклудить/прочитать исходный текст скрипта - ни одна защита не спасет (кроме быть может самописных библиотек-расширений ПХП)

-=Static=- На переменные нельзя надеяться. Например:
PHP код:

echo $_SERVER["DOCUMENT_ROOT"].'<hr>';
$_SERVER["DOCUMENT_ROOT"] = 'some trash dir';
echo 
$_SERVER["DOCUMENT_ROOT"]; 


eLWAux 21.05.2009 20:47

а делов то..
PHP код:

 if ( $_SERVER['SERVER_NAME'] == 'localhost' OR
      
$_SERVER['SERVER_ADDR'] == '127.0.0.1') {
      print 
'local run';
 } else {
      print 
'remote run';
 } 


Kaimi 21.05.2009 21:15

Цитата:

а делов то..
Угу, в своем скрипте перед инклудом твоего скрипта дописываешь
$_SERVER['SERVER_NAME'] = ....;
$_SERVER['SERVER_ADDR'] = ....;

И способ не работает

Gifts 21.05.2009 21:34

eLWAux Достаточно неожиданно, но условие будет выполняться всегда ^^ Во всяком случае server_addr :D Да и вообще - зачем читать хотя бы первый пост до конца?

m0Hze 21.05.2009 21:49

Самый оптимальный вариант - вариант 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(0count($arr) - 1);

      
$def .= $arr[$index];

    }

    return 
$def;
}

?>

Вот только неподумал, как во второй скрипт передать загенеренную константу :)
НУ может ктото другой придумает,но при таком раследе я непредставляю как ктото сможет угадать бдующую константу.

Gifts 21.05.2009 21:54

m0Hze Зачем угадывать? Инклудим файл с генератором, инклудим интересующий файл.

Опять таки - если есть возможность читать/инклудить чужой файл - бесполезно это баловство на чистом пхп


Время: 13:51