1

apache2 + php サーバーを mod_fcgid に移行しています。「.php」で終わるリンクにアクセスしようとすると、サーバーが php ソースを出力します。

GET: http://host/?inc=test.php
Does download of the index.php script

しかし、index.php を修正すると動作します。

GET: http://host/index.php?inc=test.php
Show the correct page content

私のサイト構成では:

Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride AuthConfig FileInfo Limit
AddHandler fcgid-script .php
FcgidWrapper /var/www/cgi-bin/fcgi-starter .php

fcgi-starter は、/etc/php5/cgi をラップするカスタム sh です。

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php

クエリ文字列を無視するように構成を変更するには?

よろしく

4

1 に答える 1

0

質問はServerFaultの方が良いと思います。しかし、私は思います

?inc=test.php 

本当に良い解決策ではありません。サイトをハッキングしてサーバーからファイルを読み取るためのリモート インクルードを防止できたことを願っています。

インクルード ファイルが常に php ファイルである場合、URL から.phpを削除してスクリプトに追加します。

ただし、スクリプトで定義すると、問題は発生しません。

$incFile = false;

switch($_GET['inc']):
    case 'test':
        $incFile = 'test.php';
    break;
default:
    $incFile = 'nofile.php';
于 2012-10-23T16:32:17.683 に答える