2024-05-18 19:14:05 发布
网友
x = input("Enter name") if x.lower() == "keshav": print(x)
当我在这段代码上运行sonarqube时,我会遇到安全热点问题
您可以查看与此问题有关的更多信息https://rules.sonarsource.com/python/RSPEC-4829
有人知道如何解决sonarqube的安全问题吗
我尝试过使用cgi.escape()、bleach.clean()和其他一些东西,但没有解决这个问题
首先,请注意,在您提供的链接中,该规则已被弃用:
This rule is deprecated, and will eventually be removed.
其次,我相信有一种方法可以让sonarqube闭嘴(这可能是规则被删除的原因,但我真的不知道该工具),它实际上更像是一个警告标志,告诉你要小心,但检查人员无法告诉你具体问题是什么,因为它完全依赖于上下文:风险取决于您使用价值的方式
例如,在这里,由于您正在回显输入,如果输出是元解释的,那么它可能会触发问题,输入可能包含control codes,这会影响它运行的shell,或者如果输出通过管道传输到其他一些软件,这也可能是一个漏洞。然而,由于您正在检查一个实际不可能发生的硬编码值
因此,我能看到的唯一可能的问题是,输入太大,无法访问。由于这是一个Python程序,因此它不应触发缓冲区溢出,但它可能会使程序崩溃,或强制框开始交换(取决于配置),从而导致拒绝服务情况
无论如何,您可以尝试在输入上应用某种无操作正则表达式,但是。。。对我来说似乎很愚蠢,你基本上是在接受训练来处理工具愚蠢的警告
[0]我想Python运行时可能有自己的漏洞,但假设情况并非如此
首先,请注意,在您提供的链接中,该规则已被弃用:
其次,我相信有一种方法可以让sonarqube闭嘴(这可能是规则被删除的原因,但我真的不知道该工具),它实际上更像是一个警告标志,告诉你要小心,但检查人员无法告诉你具体问题是什么,因为它完全依赖于上下文:风险取决于您使用价值的方式
例如,在这里,由于您正在回显输入,如果输出是元解释的,那么它可能会触发问题,输入可能包含control codes,这会影响它运行的shell,或者如果输出通过管道传输到其他一些软件,这也可能是一个漏洞。然而,由于您正在检查一个实际不可能发生的硬编码值
因此,我能看到的唯一可能的问题是,输入太大,无法访问。由于这是一个Python程序,因此它不应触发缓冲区溢出,但它可能会使程序崩溃,或强制框开始交换(取决于配置),从而导致拒绝服务情况
无论如何,您可以尝试在输入上应用某种无操作正则表达式,但是。。。对我来说似乎很愚蠢,你基本上是在接受训练来处理工具愚蠢的警告
[0]我想Python运行时可能有自己的漏洞,但假设情况并非如此
相关问题 更多 >
编程相关推荐