perl - perl 脚本是为哪个版本的 perl 编写的?
问题描述
我正在检查现有的 perl 脚本是否存在漏洞。大多数与 perl 相关的漏洞仅适用于某些版本。有没有办法确定使用哪个版本来编写 perl 脚本?(我不能问开发商。)谢谢!
解决方案
对于给定脚本所针对的最低 Perl 版本,可能会有一些迹象。例如:
当声明明确的版本要求时,例如
use v5.12
.当使用显式特征时,例如
use feature 'say'
。参见perldoc feature
Perl 版本和可用特性之间的关系。使用特定语法时。例如:
//
defined-or 运算符可以很容易地注意到 5.10 后的代码。push
或pop
使用标量参数表示 5.14 到 5.24。- 正则表达式语法也倾向于偶尔发生变化,例如5.14 或5.22中的
/d
,/u
,/a
,修饰符。/l
/n
您必须阅读 perldelta 文档以获取相关更改列表。
Perl::MinimumVersion 模块可以帮助自动化其中的一些检查。
但是,这些功能的存在与否与给定程序的漏洞无关。反而:
确保您使用最新的 Perl 解释器运行脚本。不要继续运行不受支持的旧版本。
除了极少数的边缘情况,新的 Perl 版本非常向后兼容,应该可以正常工作。但请注意,升级 Perl 涉及重新安装所有模块(特别是必须重新编译任何 XS 模块)。
确保您也在查看脚本的依赖项。它们也是最新的吗?新版本是否类似兼容将取决于特定模块。
推荐阅读
- reactjs - antd 表单字段未重置复选框
- vue.js - 类星体应用程序 - 我的应用程序顶部出现红色加载线以及如何摆脱
- python - 如何获取BERT中已标记为“UNK”标记的对应字符或字符串?
- c++ - 如何在 if-else 语句中使用 strcat() 来根据用户输入“是”或“否”进行更改?
- python - 使用模板将 Dataframe 写入 excel
- solr - 将 aws cloudsearch 数据复制到 apache solr
- java - 即使条件为真也不执行 if 语句
- javascript - 我有一个运行扩展的代码你如何使用一些代码将用户输入保存在变量中
- sql-server - 在 Linux 上获取 SQL 日志消息
- clang - 如何将父线程 id 传递给子线程中的 LLVM 函数挂钩?