所以,当我在python中阅读Subprocess的文档时,我遇到了这个问题。所以,让我们使用示例,因为程序员理解代码。
from Subprocess import Popen, PIPE
def connect_with_netCat(port, ip):
Popen('nc %s %s' % (ip, port), shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
我的问题;这样安全吗?我知道netcat是一个糟糕的选择,例如,因为它也为攻击者留下漏洞来调用该函数并连接到某个地方,但它是第一个出现在我脑海中的一个例子,但只是查看代码 - 是否安全因为它中有常数吗?
或者这会是一种更安全的方式吗?
def connect_with_netCat(port, ip):
from Subprocess import Popen, PIPE
Popen('nc %s %s' % (ip, port), shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
因为它超出了全球范围。只是一个奇怪的问题。
答案 0 :(得分:1)
如果您确定ip
和port
的来源是安全的,那么该命令应该是安全的。
为了更安全一点,您可以省略shell=True
,因为您没有在命令中使用任何shell语法。这样,如果命令中有shell操作符,则不会被解释。
您还应该使用%d
代替%s
作为端口,因为这需要是一个数字。