web-dev-qa-db-ja.com

MediawikiでマスクされたURL値を取得する

MediawikiでURLを正常にマスクしました。 。htaccessの次のスクリプトとMediawikiのlocalsettings.phpファイルを使用して、つまり:

。htaccess

Options +FollowSymLinks

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/(.*)$ /mediawiki/index.php?title=$1&actions=$2 [L]

Localsettings.php

$wgScriptPath       = "/lib/mediawiki";
$wgArticlePath      = "/lib/mediawiki/$1/$2";

必要なURLで正常に機能しています。しかし、私の問題は、2番目のパラメーターをページのクエリ文字列として考慮することです。しかし、ファイルで2番目のパラメーターを取得できませんでした。 $wgrequest関数で試しましたが、最初のパラメーターはtitleとしてのみ与えられています。 $_REQUESTでも試しましたが、$_REQUEST['actions']の値を与えることもあります。しかし、何度もそうではありません。何が問題なのか理解できません。

2
Kalai

私はあなたがこのような何かのために$_REQUESTを使うべきではないと言うことから始めます、それはURL文字列からだけでなく、それが設定される方法に応じて$_POSTデータと$_COOKIEデータ。これは、多少のセキュリティリスクを意味します。

URLから取得するときに$_GET変数($_GET['actions'])を使用することをお勧めします。アクションが設定されているか設定されていないことがわかっている時間に対してテストします。

何が起こっているのかは、.htaccessファイルが正常に見えるという事実に基づいて、このパラメーターが設定されていないURLにアクセスしていることを想像します。この場合、私がお勧めするのは、空白の場合に何らかのデフォルトアクションを設定することです。

$actions = isset($_GET['actions']) ? $_GET['actions'] : 'my_default_action';

また、これをクリーンアップするか、何らかの方法でホワイトリストに登録するまで、$_GETからの何かを信頼しないようにするために、これに何らかのセキュリティを投入することもできます。

2
Toby