1

フォルダへのパスがあります(例/var/www/tester/assets/themes/default/css/)。

たとえば、ユーザーはフォルダへの相対パスを指定できます。layout/ie7.cssのパスを与えます/var/www/tester/assets/themes/default/css/layout/ie7.css

これは問題なく機能しますが、ユーザーがディレクトリツリーを上に移動できるようにする必要があります。

したがって、ユーザーが指定した場合は、cssフォルダーへのパスを再度使用し../../cache/css/ie7.cssて、パスをとして終了させます/var/www/tester/assets/themes/default/cache/css/ie7.css

それらを一緒にrealpath()に渡すことができると思いました。例:

$base = '/var/www/tester/assets/themes/default/css/';
$user_path = '../../cache/css/ie7.css';
$final_path = realpath($base.$user_path);

しかし、それは単にfalseを返します。これどうやってするの?

4

2 に答える 2

1

まず、実際のパス関数は、指定されたパスが存在するかどうかもチェックします...本当にパスが存在しますか???

/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css 

に終わらないだろう

/var/www/tester/assets/themes/default/cache/css/ie7.css 

あなたが示唆するように、しかしそれはで終わる

/var/www/tester/assets/themes/cache/css/ie7.css 

指定されたファイルを含むこのフォルダーは存在しますか?

于 2012-07-13T11:11:40.913 に答える
0

ただしないでください。のようなパスに問題はありません/var/www/tester/assets/themes/default/css/../../cache/css/ie7.css。すべての OS とブラウザで動作します。

注: ここでセキュリティ リスクを作成している可能性があることを認識していますか? ユーザーが提供した場合はどうなります../../../../../../../etc/passwdか?

于 2012-07-13T11:36:15.793 に答える