PHP脚本被劫持

时间:2015-02-12 14:33:07

标签: php filemaker

首先,我不是一个php编码器,所以我不知道为什么会发生以下情况。 我有一些开发人员创建的php文件,用于在Filemaker Webdirect中查找。 php文件假设与Filemaker建立连接并在Webdirect中显示查找。 截至昨天,运行php脚本突然将浏览器重定向到http://www.searchingresult.com/?pid=9POLWR59T&dn=smilepix.i.com.com&rpid=9POKA9272

php脚本有三个文件:fm_link.php,fm_read.php和fm_write.php,按顺序运行。

为了尝试解决这个问题,我尝试了一些方法。

  1. 尝试从另一台计算机运行脚本 - 与上面的结果相同。
  2. 将php脚本放在另一个域上 - 与上面的结果相同。
  3. 以下是运行的脚本: 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.');
        }
    

    我对此感到沮丧,不知道该怎么做。

    先谢谢你的帮助 - 山姆

2 个答案:

答案 0 :(得分: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寻找其他开发公司。无论哪种方式,让开发人员检查出来。

答案 1 :(得分:0)

我怀疑托管php的地方有一些apache mod或者在你的脚本运行之前重定向页面的东西。

听起来这取决于托管PHP文件的位置,以及它们在FM文件中的引用方式。您使用的域名是否已过期?您可能会尝试使用IP地址指向php文件的位置。

顺便说一句,我在Chrome和Firefox中测试了我自己的服务器上托管的解决方案,这些都适用于我。 Firefox不是WebDirect支持的浏览器,但这很有效。

这些文件来自博客文章: http://www.soliantconsulting.com/blog/2015/01/extending-webdirect-url-parameters

由于 麦克