擅长:python、mysql、java
<p>如果<code>open</code>使用与<code>os.path.abspath</code>相同的机制来解析路径,这似乎可以工作。这种方法有什么缺陷吗?在</p>
<pre><code>import os
def is_safe(filename):
here = os.path.abspath(".")
there = os.path.abspath(filename)
return there.startswith(here)
>>> is_safe("foo.txt")
True
>>> is_safe("foo/bar/baz")
True
>>> is_safe("../../goodies")
False
>>> is_safe("/hax")
False
</code></pre>