1

特定のディレクトリを削除するために、ユーザー入力と連結された定義済みのパスがあります。現在のコードは次のようになっています。

import os
import shutil
userinput = '../../'
path = os.path.join('/my/self/defined/path', userinput)
shutil.rmtree(path)

これにより、ユーザーは明らかにファイルまたはディレクトリを削除できます。/my/self/defined/pathユーザーを「../投獄」する良い方法は何/ですか?

4

2 に答える 2

0
import os
import shutil
import sys
userinput = '../../'
selfdefinedpath = '/my/self/defined/path'
path = os.path.join(selfdefinedpath, userinput)
if not selfdefinedpath in os.path.realpath(path):
  print 'not proper path %s' % path
  sys.exit()
shutil.rmtree(path)
于 2013-08-21T13:13:02.307 に答える
0

どうですか

my = os.path.abspath('/my/self/defined/path')
new = os.path.abspath(path)
if len(new) < len(my) or not new.startswith(my):
   print 'bzzzt'

http://docs.python.org/2/library/os.path.html

于 2013-08-21T13:10:01.527 に答える