我正在用Python编写一个Web服务器作为业余爱好项目.该代码针对*NIX机器.我刚开始在Linux上开发,甚至比Python本身更新.
我担心人们会打破我用来提供网站的文件夹.最明显的方法是过滤对/../../etc/passwd等文档的请求.但是,我担心可能有一些聪明的方法可以上去我不知道的目录树,因此我的过滤器无法捕获.
我正在考虑使用os.chroot添加,以便根目录是网站本身.这是一种防止这些越狱攻击的安全方法吗?这样做有什么潜在的陷阱会伤害我的道路吗?
是的,有陷阱.安全明智:
如果你以root身份运行,总有办法突破.所以首先chroot(),然后永久地将权限下放给其他用户.
在chroot树中放入任何不是绝对必需的东西.特别是没有suid/sgid文件,命名管道,unix域套接字和设备节点.
Python智能你的整个模块加载搞砸了.Python根本不适用于这种情况.如果您的应用程序中等复杂,您将遇到模块加载问题.
我认为比chrooting更重要的是作为非特权用户运行,并且只是使用文件系统权限来阻止该用户阅读任何重要的内容.