1

mod_rewriteどうすればセキュリティが向上するのかという疑問があります。

オンラインのような.pdfファイルを表示するphpファイルがあり、www.exaple.com?id=234データベースにクエリを実行して実際のフォルダーの場所を取得します。

実際のフォルダーの場所はあり、実際のフォルダーの場所を非表示にする方法のuploads/ようなものを使用しています

今私は使いたいgoogle docs

 echo "<iframe src=\"http://docs.google.com/gview?url=".root."uploads/myfile.pdf"."&embedded=true\" style=\"width:100%; height:100%;\" frameborder=\"0\"></iframe>

uploads/しかし、このURLにアップロードディレクトリを表示したくないのでmodule_rewrite、ディレクトリ名をに変更しmyfiles/ます。

問題は、ユーザーがディレクトリを に変更すると、www.example.com/myfiles/hacking.phpにも書き換えられるということuploads/hacking.phpです。

ユーザーがファイルをアップロードできるようにしています。ブラックリストを使用していますが、セキュリティホールが存在する可能性があると想定しています

4

2 に答える 2

1

ファイルを Web アクセス可能な場所に置かないでください。www ルートから離れた場所に保管し、ファイルを開いて読み取り、ブラウザーに出力するスクリプトを用意します。

そうすれば、たとえphpファイルであっても、コンテンツだけが送信され、実行されません。

于 2012-10-03T11:42:07.583 に答える
1

パスを非表示にするために URL を書き換えても無駄です。

最終的に、ユーザーが使用できる URL が得られます。リクエストにより、彼にリソースが送信されます。example.com/?fileid=123彼が代わりに要求した場合の違いは何ですかexample.com/uploads/file123.ext?

はい、パラメーターに何かを入れると、スクリプトを使用してリソースをフェッチして送信する必要があります。パスのように見えるものを使用すると、このスクリプトを使用できるようになります。しかし、それを使用することはできますが、これによってセキュリティが向上することはありません。スクリプトを使用しないということは、リソースを要求しているユーザーが許可されているかどうかを確認できないことを意味しますが、パブリック リソースの場合、これは問題になりません。

あなたは本当に何をしようとしていますか?セキュリティ上の問題は、悪意のあるコンテンツがアップロードされたかどうかを確認することですか? 実行可能ファイルのアップロードを許可し、さらにそれらの実行を許可すると、あなたは運命づけられます. URL を書き換えても、何の役にも立ちません。

アップロードされたものを確認します。このようなことがサーバー上で実行されないようにします。

ここで説明する URL を使用する場合、状況は次のようになります。

書き換えなしで参照する場合、書き換えを/uploads/example.pdf使用すると、この URL が別のものに変換され、元の URL が無効になります。それでもアップロード フォルダからコンテンツを取得できる場合は、書き直しが間違っています。

それが正しければ、古いアップロード URL を使用する必要はありません。もう機能しないからです。

于 2012-10-03T11:42:30.043 に答える