PHP脚本被劫持

PHP脚本被劫持,php,filemaker,Php,Filemaker,首先,我不是php程序员,所以我不知道为什么会发生以下情况。 我有一些开发人员创建的php文件,我用它们在Filemaker Webdirect中查找。假设php文件创建与Filemaker的连接,并在Webdirect中显示查找结果。 从昨天开始,运行php脚本突然将浏览器重定向到 php脚本有三个文件:fm_link.php、fm_read.php和fm_write.php,它们按顺序运行 为了解决这个问题,我尝试了一些方法 尝试从另一台计算机上运行脚本-结果与上面相同 将php脚本放在另一

首先,我不是php程序员,所以我不知道为什么会发生以下情况。 我有一些开发人员创建的php文件,我用它们在Filemaker Webdirect中查找。假设php文件创建与Filemaker的连接,并在Webdirect中显示查找结果。 从昨天开始,运行php脚本突然将浏览器重定向到

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

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

  • 尝试从另一台计算机上运行脚本-结果与上面相同
  • 将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_link.php
    中的以下行似乎是唯一可能导致页面将用户重定向到其他页面的代码:

    header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile );
    
    其他文件中的所有内容都在读取和写入服务器上的文件,但这些内容都不会导致重定向

    这似乎也是罪魁祸首,因为它只是接受从触发
    fm_link.php
    文件的任何形式或链接传入的信息。无论是谁劫持了您的安装程序,都可能将恶意代码放置在触发
    fm_link.php
    的表单或链接中,而您显示的代码中似乎不包含该表单或链接

    我不认为你的问题源于你发布的代码,但我对你的帖子的回答是:打电话给专业人士

    如果你不是一个php程序员,你不确定发生了什么是好的,这是一个学习的好地方,但我不建议你尝试通过StackOverflow自己处理它。如果有人真的劫持了你的代码,最好让专业的开发人员检查一下整体结构。你可能看到了一个更大问题的症状


    你可以联系我工作的公司,帮助你解决问题,或者你也可以使用。无论哪种方式,都要让开发人员检查一下

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

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

    顺便说一句,我在自己的服务器上用Chrome和Firefox测试了这个解决方案,这两个都对我有用。Firefox是WebDirect不受支持的浏览器,但它起到了作用

    这些文件来自此处的博客帖子:

    谢谢
    Mike

    搜索一下就猜一猜-清除web浏览器缓存。确保未添加或运行任何新扩展,并使用“noscript”或等效工具,或仅在web浏览器中禁用“javascript”。现在,请尝试使用该网站。同样的结果?谢谢Ryan这么快的回答。我照你上面说的做了,但是当禁用javascript时,我得到了这样一条消息:“你必须在浏览器中启用javascript,才能使用用Vaadin构建的应用程序。”此外,我让Filemaker脚本在问题发生时暂停,在参数全局字段中我得到了这样一条消息:*域发起人重定向

    “。我正在查看我们的调制解调器,看看它是否受到了影响。你能和“支持”人员谈谈这个问题吗?我通过他们的网页得到了解决方案,他的响应不是很快,但我认为这不是他的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.');
        }
    
    header('Location: http://' . $fmurl . '/fmi/webd#' . $fmfile );