首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非文字导入importlib.import_module()中不受信任的用户输入警告

非文字导入importlib.import_module()中不受信任的用户输入警告
EN

Stack Overflow用户
提问于 2021-09-02 12:01:39
回答 1查看 58关注 0票数 1

当我通过Semgrep(静态代码验证器)运行我的python代码时,我得到了下面的警告。请建议任何实际的例子,如何使用白名单来防止运行不可信的代码或任何其他解决方案,以避免这种警告。我在网上搜索,但没有找到任何例子。

我在import_module的粒子线以下收到警告

警告: importlib.import_module()函数中不受信任的用户输入允许攻击者在importlib.import_module()中加载任意code.Avoid动态值或使用白名单来阻止运行不受信任的代码。

代码语言:javascript
复制
channel_module = import_module("src.main.core_prj.prj_" + config['subscription'].lower())
EN

回答 1

Stack Overflow用户

发布于 2021-10-27 13:04:07

触发的规则可以在https://semgrep.dev/r?q=Untrusted+user+input+in+importlib.import_module上找到。单击规则将展开以显示定义,其中显示它允许importlib.import_module("..")并在使用变量时触发警告。

该规则提到它打算防止CWE-706: Use of Incorrectly-Resolved Name or Reference,这是相当广泛的。

这在示例代码中并不相关,因为在用户定义的配置字符串之前有一个字符串前缀,所以import_module("src.main.core_prj.prj_" + config['subscription'].lower())不可能加载目标控制范围(src.main.core_prj...)之外的模块(资源)。

要指示semgrep忽略该行,可附加一个内联注释nosem,如下面的Python所示

代码语言:javascript
复制
>>> channel_module = importlib.import_module("src.main.core_prj.prj_" + config['subscription'].lower())  # nosem

https://semgrep.dev/s/KXZL的semgrep规则游乐场中测试以上内容

在添加这些禁用行的内联注释或行上的特定规则之后,可以使用--strict命令行参数再次显示它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69029885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档