4

だから...私は非常に単純な次のコードを持っています:

<?php echo $_GET["base_grant_url"] ?>

現在、これはテスト用です。私は問題を抱えています...次のURLをテストしたとき:

http://localhost/?base_grant_url=htt%3A%2F%2Fn00.test.com
http://localhost/?base_grant_url=http%3A%2F%2Fn00

パラメータは正しく出力されます。最初の「p」が欠落しており、「.」がないことに注意してください。秒のパラメーターの文字。次の 2 つの URL が渡される場合:

http://localhost/?base_grant_url=http%3A%2F%2Fn00.test.com
http://localhost/?base_grant_url=http%3A%2F%2Fn00.

これらのアドレスは両方ともまったく何も出力しません...これはより大きなシナリオの小さな部分であるため、問題をこれに絞り込むのにかなりの時間がかかりましたが、これは私が現在修正しようとしているものです. パラメータが間違っているのに、HTTP と "." があるのにパラメータを取得できないのはなぜですか。それらの文字... $_GET 関数は失敗しますか? 私が見逃している一般的な規則や、この問題に対する簡単な修正はありますか?

編集:したがって、ローカルテストサーバーでテストした後、正常に動作します。ホスティングプロバイダーに連絡して、問題を見つけようとします.

print_rの出力については...ここにコードと出力があります:

コード:

echo "Base Grant URL = ";
echo $_GET["base_grant_url"];
echo " -=- GET = ";
print_r($_GET); 

テスト 1 (パラメーターに "." がない場合、http がパラメーターに含まれていない場合にも機能します):

URL: http://testserver.com/?base_grant_url=https%3A%2F%2Fexamplecom%2Fsplash%2Flogin%2F%3Fmauth%3DABCDEFG123456
OUTPUT: Base Grant URL = https://examplecom/splash/login/?mauth=ABCDEFG123456 -=- GET = Array ( [base_grant_url] => https://examplecom/splash/login/?mauth=ABCDEFG123456 )

テスト 2 (適切な URL を使用):

URL: http://testserver.com/?base_grant_url=https%3A%2F%2Fexample.com%2Fsplash%2Flogin%2F%3Fmauth%3DABCDEFG123456
OUTPUT: Base Grant URL = -=- GET = Array ( )
4

1 に答える 1

1

私は同じ問題を抱えていました.「一般的なPHPコードインジェクション」と呼ばれるものから保護するために、サーバーでいくつかのmodセキュリティルールを有効にしたのは私のWebサイトホスティング会社でした. リスクがあることに同意するかどうかはわかりませんが、彼らはそれを無効にし、私のスクリプトが機能し始めました.

于 2013-02-18T10:36:06.993 に答える