nmi*_*els 14
eval并且exec是经典.但是,open也file可能被滥用:
open('/proc/kcore', 'w').write('0' * 1000 * 1000 * 1000)
Run Code Online (Sandbox Code Playgroud)
再就是os,sys,subprocess,和dircache模块.几乎任何触及文件系统或可用于将数据转换为可执行代码(例如os.system)的东西都将出现在列表中.
正如S. Lott在评论中指出的那样,写入文件系统并执行任意外部程序不是特定于Python的.但是,它们值得安全审核员考虑.大多数这些功能可以安全使用而不必过多关注安全性.eval而exec另一方面,是一个伟大的大红旗.安全使用它们需要精心呵护.
小智 14
从pickle文档:
Warning
The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
Run Code Online (Sandbox Code Playgroud)
在寻找这种事情时,我倾向于偏执狂.更多是因为我倾向于做很多元编程.
open,tarfile,zipfile,...)urllib2,socket,...)pickle,shelve,...)subprocess,os.fork,os.kill,...)getattrsetattrdelattrevalexecexecfile__import__也许还有其他我忘了.我也对通过我修改sys.path,sys.modules等功能的用户输入保持警惕.
的子模块包含弃用执行命令/过程的这些方式讨厌功能:
os.system
os.spawn*
os.popen*
popen2.*
commands.*
Run Code Online (Sandbox Code Playgroud)
还有exec将执行python代码和eval,它将"评估"表达式并可用于操作变量.