擅长:python、mysql、java
<p>我不太了解Turbogears,也不知道它是否可以提供任何东西来避免以下情况,但在我看来,这个代码充满了危险。恶意用户可能会覆盖(或创建)Turbogears python进程具有写访问权限的任何文件。在</p>
<p>如果<code>asset_dirname</code>是<code>/tmp</code>,<code>file.filename</code>的内容是{<cd4>},而文件的内容是{<cd5>},怎么办?在UNIX环境中,此代码(权限挂起)将在截断模式下打开文件<code>/tmp/../../../../../../../etc/passwd</code>,然后将上载文件的内容复制到该文件中-有效地覆盖系统的密码文件并指定一个没有密码的根用户。大概也有一些讨厌的事情可以对Windows机器做。在</p>
<p>好的,这是一个极端的例子,它要求python以<code>root</code>的形式运行(没有人这样做,是吗?)。即使python是以低权限用户身份运行的,以前上载的文件也可能被随意覆盖。在</p>
<p>总之,不要信任用户输入,在本例中是用户提供的文件名,该文件名在<code>file.filename</code>中可用。在</p>