私はPythonで単純なファイルサーバーを書いています。ファイル名はクライアントによって提供され、信頼されていないとみなすべきです。現在のディレクトリ(そのディレクトリ内またはそのサブディレクトリ内)内のファイルに対応することを確認するにはどうすればよいですか?次のようになりますか:Python3で現在のディレクトリにファイルを開くだけを許可する方法は?
pwd=os.getcwd()
if os.path.commonpath((pwd,os.path.abspath(filename))) == pwd:
open(filename,'rb')
とすればよいですか?
import os, os.path
def in_cwd(fname):
path = os.path.dirname(os.path.realpath(fname))
return path.startswith(os.getcwd())
カノニカル経路にfname
を変換し(標準形式で)カレントディレクトリがその接頭辞である場合
何についてhttps://docs.python.org/3/library/pathlib.html#pathlib.Path.resolve? –