点击 “i 小码哥”关注
设为 “星标”,每日消息送达且周六送书哦!
来自 | 量子位 编译整理 | 晓查
别再图方便了
系统路径上的每个条目都处于安全的位置;
“主脚本”所在的目录始终位于系统路径中;
若python命令使用-c和-m选项,调用程序的目录也必须是安全的。
下载文件夹并不安全
~$ cd Downloads
~/Downloads$ python -m pip install ./totally-legit-package.whl
~$ mkdir attacker_dir
~$ cd attacker_dir
~/attacker_dir$ echo 'print("lol ur pwnt")' > pip.py
~/attacker_dir$ python -m pip install requests
lol ur pwnt
设置$PYTHONPATH也不安全
# tool.py
try:
import optional_extra
except ImportError:
print("extra not found, that's fine")
# optional_extra.py
print("lol ur pwnt")
~/attacker_dir$ python ../install_dir/tool.py
extra not found, that's fine
~/attacker_dir$ export PYTHONPATH="/a/perfectly/safe/place:$PYTHONPATH";
~/attacker_dir$ python ../install_dir/tool.py
lol ur pwnt
~/attacker_dir$ export PYTHONPATH="";
~/attacker_dir$ python ../install_dir/tool.py
lol ur pwnt
export PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}new_entry_1"
export PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}new_entry_2"
$ echo "${PYTHONPATH}"
new_entry_1:new_entry_2
预防措施
如果要在下载文件夹~/Downloads中使用Python编写的工具,请养成良好习惯,使用pip所在路径/path/to/venv/bin/pip,而不是输入/path/to/venv/bin/python -m pip。
避免将~/Downloads作为当前工作目录,并在启动之前将要使用的任何软件移至更合适的位置。
https://glyph.twistedmatrix.com/2020/08/never-run-python-in-your-downloads-folder.html
零基础学 Python,请往看下嘛 送您价值 109 的视频课 只需7天时间,跨进Python编程大门,已有3800+加入 【基础】0基础入门python,24小时有人快速解答问题;
【提高】40多个项目实战,老手可以从真实场景中学习python;
【直播】不定期直播项目案例讲解,手把手教你如何分析项目;
【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。
【人脉】收获一群志同道合的朋友,并且都是python从业者
【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子。【赠予】价值109元 0基础入门在线课程,免费送给圈友们,供巩固 如果看到这里,说明你喜欢这篇文章,请转发、点赞。 老铁,三连支持一下,好吗?↓↓↓