全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 10 道配套习题

供应链安全与防护专题

专题说明

本专题聚焦NPM供应链安全领域,涵盖恶意包注入、依赖劫持、命名混淆等攻击手法的识别与防御,以及integrity校验和版本锁定等防护策略。

学习目标

  1. 理解供应链攻击的常见类型与手法
  2. 掌握依赖完整性验证的实现原理
  3. 学会通过精确版本号与锁文件防止版本篡改

学习内容

  • 攻击类型:恶意包注入、依赖劫持、命名混淆
  • 完整性验证:integrity校验、下载包哈希验证
  • 版本锁定:精确版本号、锁文件防护

学习建议

  1. 安装第三方包前审查其维护状态与依赖数量
  2. 始终提交package-lock.json确保integrity校验生效
  3. 关注npm audit报告中的安全漏洞并及时修复

📝 配套习题(10 题)

💡 参考答案在文末
判断题
1

当package.json中某个依赖的版本范围从"^1.2.0"改为"^1.3.0"后,即使存在package-lock.json,运行npm install时也会自动将依赖更新到符合新范围的最新版本。

A

B

单选题
2

在package-lock.json中,每个依赖条目都包含"integrity"字段。关于该字段的安全作用,以下哪个描述最准确?

A

integrity字段仅用于验证包的版本号是否与预期一致,不验证包内容

B

integrity字段使用SHA-1算法生成hash,用于检测包在传输过程中是否被篡改

C

integrity字段采用Subresource Integrity(SRI)格式,包含hash算法和base64编码的hash值,用于验证包内容的完整性

D

integrity字段由npm registry在发布时生成,开发者无法在本地验证其正确性

3

从供应链安全角度,以下哪种依赖版本锁定策略最为安全?

A

在package.json中使用"*"或"latest"作为版本范围,配合package-lock.json锁定

B

在package.json中使用精确版本号(如"1.2.3"),配合package-lock.json和integrity校验

C

在package.json中使用"~1.2.3"版本范围,不使用package-lock.json

D

在package.json中使用"^1.2.3"版本范围,仅依赖package-lock.json锁定

4

攻击者发布一个名为"lodwash"的包来欺骗用户误装"lodash",这种供应链攻击类型称为?

A

Dependency Hijacking

B

Typosquatting

C

Star-Jacking

D

Malicious Fork

多选题
5

关于npm依赖完整性验证,以下哪些说法是正确的?

A

npm audit可以检测项目依赖中已知的安全漏洞

B

package-lock.json中的integrity字段可以防止依赖内容在registry端被篡改

C

npm --ignore-scripts可以防止恶意install脚本执行,是完整性验证的一部分

D

npm outdated命令可以检测依赖是否存在安全漏洞

E

使用npm ci而非npm install可以确保严格按照package-lock.json安装,避免意外更新

F

npm包的签名验证(signed packages)在npm v7+中默认启用并强制验证

6

关于npm依赖版本锁定,以下哪些说法是正确的?

A

npm ci命令要求项目必须存在package-lock.json,否则会报错退出

B

package-lock.json中的"version"字段是精确版本号,不受package.json中版本范围的影响

C

使用npm install --no-save安装的包不会更新package.json,但仍会更新package-lock.json

D

在npm v7+中,package-lock.json默认使用lockfileVersion 2格式,支持对依赖树更完整的记录

E

将package-lock.json提交到Git仓库是最佳实践,可以确保团队成员安装一致的依赖版本

F

npm shrinkwrap和package-lock.json功能完全相同,可以互相替换

7

以下哪些属于NPM供应链攻击的常见类型?

A

Typosquatting - 发布名称相似的恶意包

B

Dependency Confusion - 利用内部包名在公共仓库发布同名包

C

Account Hijacking - 接管维护者NPM账号

D

npm audit - 扫描已知漏洞

填空题
8

package-lock.json中的integrity字段采用____________格式,该格式源自Web平台的____________规范。npm默认使用____________哈希算法生成integrity值,但也可以同时包含多种算法(如sha512和sha1组合)。当npm安装包时发现integrity不匹配,会拒绝安装并报错(填写行为)。npm v5之前,锁定文件使用shrinkwrap字段存储SHA-1 hash。

9

npm shrinkwrap命令生成的____________文件与package-lock.json的格式完全相同,但关键区别在于:当包被发布到npm registry时,____________会随包一起发布,而____________会被npm自动忽略。这意味着使用shrinkwrap可以确保包的消费者也使用锁定的间接依赖版本。

10

Dependency Confusion攻击的原理是:当项目的____________或安装配置中同时存在私有仓库和公共仓库时,攻击者在公共NPM仓库发布与____________同名的更高版本包,诱使NPM优先从公共仓库安装恶意版本。

参考答案
1.正确 2.C 3.B 4.B 5.A;B;C;E 6.A;C;D;E 7.A;B;C 8.SRI(Subresource Integrity);SRI;sha512 9.npm-shrinkwrap.json;npm-shrinkwrap.json;package-lock.json 10..npmrc;内部私有包
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 企业级私有仓库部署专题
下一个专题 → 依赖管理基础专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码