-1

次のようなデータ エクスポート Web サービスを検討しています。

  1. 入力としてファイル名を取ります (完全なパスではなく、単に名前)
  2. ディレクトリ文字列定数を使用して、ファイルへのフルパスを連結します
  3. ファイルを圧縮します
  4. Web アクセス可能なディレクトリにある出力 zip ファイルへの URL を返します

入力ファイル名に対して検証が行われていない場合 (たとえば、ファイルが存在するかどうか)、Web サービスが悪意のあるユーザーに対してどのような潜在的なリスク/脆弱性を持っている可能性がありますか?

4

1 に答える 1

3

あなたのdirectory文字列定数が"/tmp/files"

攻撃者は提供する可能性があります"../../etc/passwd"

>>> import os
>>> os.path.abspath(directory + "../../etc/passwd")
'/etc/passwd'

少なくとも、入力をベース名まで削除したいでしょう

>>> os.path.join("/tmp/files", os.path.basename("../../etc/passwd")
/tmp/files/passwd
于 2013-10-22T06:24:53.057 に答える