2015-02-12 1 views
1

Во-первых, я не php-кодер, поэтому у меня нет подсказки, почему происходит следующее. У меня есть некоторые php-файлы, созданные разработчиком, которые я использую для поиска в Filemaker Webdirect. Предполагается, что файлы php создают соединение с Filemaker и отображают find в Webdirect. вдруг как вчера, запустив сценарий PHP перенаправлен браузер http://www.searchingresult.com/?pid=9POLWR59T&dn=smilepix.i.com.com&rpid=9POKA9272PHP Script Is Hijacked

Сценарий PHP имеет три файла: fm_link.php, fm_read.php и fm_write.php, которые работают в таком порядке.

Чтобы попытаться решить проблему, я попробовал несколько вещей.

  1. попробуйте запустить сценарий с другого компьютера - тот же результат, что и выше.
  2. Поместите сценарии php на другой домен - тот же результат, что и выше.

Вот скрипт, выполняются: fm_link.php

<?php 

session_start(); 

// default parameters, if not passed 
$fmurl = ''; // enter the address of the server hosting webdirect 
$fmfile = ''; // enter the default file to open 

if (isset($_GET['fmurl'])) { 
    $fmurl = $_GET['fmurl']; 
} 
if (isset($_GET['fmfile'])) { 
    $fmfile = $_GET['fmfile']; 
} 


// store all GET paramters in a session 
if (isset($_GET) && count($_GET) > 0) { 
    $_SESSION['get_requests'] = $_GET; 

} 

// redirect to WebDirect Session 
header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile); 

fm_read.php

<?php 

// check for required parameter, should match the UUID passed in fm write file. 
if(isset($_GET['file_uuid']) && strlen($_GET['file_uuid'])>0){ 

    $filename_string = filter_var($_GET['file_uuid'], FILTER_SANITIZE_STRING); 

    $fn = '/tmp/'.$filename_string.'.txt'; 

    $fr = fopen($fn, "r") or die("Unable to open file!"); 
    echo fread($fr, filesize($fn)); 
    fclose($fr); 

    unlink($fn); // remove the file once read 

} else { 

    exit('Error: No file.'); 

} 

fm_write.php

<?php 

    session_start(); 

    // only write to file if we get the correct parameter "file_uuid" 
    if (isset($_GET['file_uuid']) && strlen($_GET['file_uuid']) > 0) { 
     // save temp file with uuid from server. sanitize the file_uuid parameter 
     $filename_string = filter_var($_GET['file_uuid'], FILTER_SANITIZE_STRING); 
     // add extension for writing 
     $filename = $filename_string . '.txt'; 

     // set session variables to a string to write 
     //initialize string 
     $string = ''; 
     // set each parameter as local variable 
     foreach ($_SESSION['get_requests'] as $key => $value) { 
      if ($key == 'fmurl' || $key == 'fmfile') { 
       // do not store these two parameters 
      } else { 

       // store as variables 
       $string .= '$' . urlencode($key) . ' = "' . urlencode($value) . '"; '; 
      } 
     } 

     // write the file to temp 
     $fn = '/tmp/' . $filename; 
     if ($fn) { 
      $f = fopen($fn, 'w+'); 
      if ($f) { 
       $fw = fwrite($f, $string); 
       if ($fw) { 
        echo 'wrote file.'; // . $fn 
        // once file is written, destroy session 
        session_destroy(); 

       } else { 
        echo 'write error'; 
       } 
      } else { 
       echo 'open error'; 
      } 
     } else { 
      echo 'file error'; 
     } 
    } else { 

     exit('nothing to do.'); 
    } 

Я в тупике с этим и не знаю, что делать.

Заранее спасибо за вашу помощь - Сэм

+0

Просто догадок после небольшого поиска - очистить кэш веб-браузера. Убедитесь, что новые расширения не добавлены или запущены и не используются «noscript» или их эквивалент или просто отключите «javascript» в веб-браузере. теперь попробуйте использовать веб-сайт. Те же результаты? –

+0

Спасибо Райан за ответ так быстро. Я сделал то, что вы сказали выше, но при отключении javascript я получаю это сообщение: «Вы должны включить javascript в своем браузере, чтобы использовать приложение, созданное с помощью Vaadin». Кроме того, у меня есть сценарий Filemaker pause в точке, где происходит эта проблема, и в глобальном поле параметра я получаю следующее: * Переадресация домена Спонсора

". Я просматриваю наш модем, чтобы узнать, не пострадало ли оно. – user3753328

+0

Can вы разговариваете с человеком «поддержки» по этой проблеме? –

ответ

0

Так из кода вы показываете, это выглядит как единственный код, который может вызвать страницу, чтобы перенаправить пользователя на другую страницу является следующая строка в fm_link.php :

header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile); 

Все остальное в других файлах чтение и запись в файл на сервере, но ни один из них не вызовет переназначение.

Это также похоже, что это может быть преступником, потому что оно просто принимает информацию, передаваемую из любой формы или ссылки, которую вы нажимаете, которая запускает файл fm_link.php. Кто бы ни захватил вашу установку, возможно, разместил вредоносный код в форме или ссылке, что триггеровfm_link.php, который не выглядит включенным в код, который вы показываете.

Я не думаю, что источник вашей проблемы указан в коде, который вы опубликовали, но мой ответ на ваш пост: позвонить профессионалу.

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

Вы можете связаться с компанией, в которой я работаю, Skeleton Key, о помощи вам или вы можете найти другую компанию-разработчик, используя FileMaker's Consultant Search. В любом случае, попросите разработчика проверить это.

0

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

Похоже, что это зависит от того, где размещаются ваши PHP-файлы, и как они указаны в файле FM. Является ли домен, который вы используете устаревшим? Вместо этого вы можете попытаться указать расположение файлов php с IP-адресом.

Кстати, я протестировал решение, размещенное на моем собственном сервере в Chrome и Firefox, и оба из них работали для меня. Firefox не поддерживает браузер для WebDirect, но это сработало.

Эти файлы были из блоге здесь: http://www.soliantconsulting.com/blog/2015/01/extending-webdirect-url-parameters

Благодаря Майк

 Смежные вопросы

  • Нет связанных вопросов^_^