1

GET リクエストで定義されたファイルを返す独自の静的ファイル ビューを作成したいと考えています。ファイルは別のディレクトリにある必要があります。URL は のようにする必要があります/e?s=NAME_OF_FILE。私の問題は、ハッカーがこれを使用/e?s=/PATH/TO/DATABASEしてサーバーから任意のファイルを取得できることです。すでに回避策がありますが、より良い解決策があると思います。

私のコード:

path = os.path.abspath(os.path.join(script_path, filename))
if path.startswith(script_path):
    # Good
else:
    # Bad

これは、サーバーによって処理されるべきではない「隠し静的ファイル」用です。

4

1 に答える 1

3

あなたがしていることはあまり役に立ちません。あなたができるいくつかのこと -

  1. 「ハッカー」がそのディレクトリ内のすべてのファイルのリストを取得しないように、Web サーバーでディレクトリのリストをオフにします。
  2. 実際のファイル名を外部に公開する代わりに、ファイル名を取得し、このファイル名の MD5 を生成し、このマッピングをサーバーのどこかに保存し、この MD5 をファイル名として公開することができます。となり/e?s=MD5_HASH_OF_FILENAMEます。これにより、「ハッカー」がファイル名を「推測」することが非常に困難になります。MD5 は容易に推測できないため、ブルート フォースは役に立ちません。したがって、実際には、この URL を何らかの方法で送信された人だけがアクセスできます。
  3. この静的ファイル表示 API は、パブリック API にするのではなく、認証されたユーザーのみに公開できます。@login_requiredデコレーターを使用できます。
  4. 最後に、Web サーバーで HTTPS を有効にします。
于 2012-11-11T10:10:50.183 に答える