2011-12-28 8 views
0

PHPとJavascriptを使用して小さなファイルブラウジングスクリプトを作成していますが、私は小さな問題に遭遇しました。現在のディレクトリは、URLにGETとして、index.php?dir=/projects/jphpがベースにあるときに格納されます。ユーザーがそれらthorugh見ることができるようにfielsが表に記載されているように、フォルダは次のようにハイパーリンクされてい秘密../リアルディレクトリにPHP

$scandir = $_GET['dir']; 

を:私は、使用してvariabe $scandirでこれを保管

<td><a style="color: red;" href="edit.php?pid=<?php echo $project['id'] ?>&dir=<?php echo $scandir . "/" . $thisfile; ?>"><?php echo $thisfile; ?></a></td> 

変数$thisfileは人口でありますディレクトリ内のすべてのファイルを通過するループforeach()を使用します。
ユーザーがファイルアドレスはとても乱雑なり、フォルダやファイルを閲覧するために起動すると、例えば、ファイルの閲覧分後、$_GET['dir'];

projects/jphp/js/../js/../../../projects/jphp 

のように見える保つためにどのような方法があります上のパスと同じ単純なパスは、

と同じです。
projects/jphp 

トップを下に隠す方法が分かっていれば、それは素晴らしいことです。私はこれをうまく説明していないかもしれないので、あなたに私が意味を成していないことを知らせてください。

+1

あなたは[RFI]の意味を理解していることを確認してください(http://de.wikipedia.org/wiki/Remote_File_Inclusionリモートファイルインクルージョン) – knittl

+0

ええ、私はそれを動的に/セキュリティの影響を考慮してユーザーの入力で行うことをお勧めします。 – Kzqai

+0

個人的には、地元のアプリが一緒にハッキングすると、問題が発生する可能性があることがわかります。なぜなら、誰かが「よく、ローカルネットワークでここにアクセスしても大丈夫です。自宅や道路からアクセスすることなどが含まれます。しかし、あなたが危険を認識している限り。 – Kzqai

答えて

2

あなたが探しているものはrealpath()です。あなたがどんな結果を取得していない場合は、お使いのフォルダのアクセス許可を確認します

The running script must have executable permissions 
on all directories in the hierarchy, otherwise 
realpath() will return FALSE. 
+0

しかしそれはC:\ xampp \ htdocs \ ide \ projects \ jphpを返します。私はむしろ/ projects/jphpの形式になっています – JustinPGriffen

+1

後ろのスラッシュを後でスラッシュに置き換えてください...大したことのようには思われません:) –

+0

それは\それを行います。 Shaiさんの言うとおり、単にstr_replaceを実行します。 –

0

私はあなたが&dir=/some/&dir=/some/path/../のようなあなたのリンクを交換、これだけ/some/path/../にリンクを行わないことと思いますが、/some/に、彼らは同じです。

UPD:については

、例:

<?php 
$dir = $scandir; 
if($dir=='..'){ 
    if($scandir=='' || $scandir=='/'){ 
     // skip this entry using continue or something else 
    } 
    if(substr($scandir,-1)=='/'){ 
     $dir = dirname(substr($scandir,0,-1)).'/';   
    }else{ 
     $dir = dirname($scandir).'/'; 
    } 
    if($dir==''){ 
     $dir = '/'; 
    } 
}else{ 
    $dir = $scandir.'/'.$thisfile; 
} 
?> 
<td><a style="color: red;" href="edit.php?pid=<?php echo $project['id'] ?>&dir=<?php echo $dir; ?>"><?php echo $thisfile; ?></a></td> 
+0

私の答えを更新しました – Timur