如何确保我的依赖项使用Safe Rust?

k4emjkb1  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(85)

有没有一种方法可以在Cargo.toml中声明我的项目只依赖于保证传递使用SafeRust的第三方crate?
我是Rust的新手,Rust对我来说也是新的。我还没有机会尝试任何东西。

yjghlzjz

yjghlzjz1#

解析重复

首先,每当作者提到使用不安全代码时,请查看crates.io文档。您可以通过在源代码中搜索unsafe关键字来仔细检查。
然而,检查crate及其依赖项的源代码是一项繁琐的工作。名为cargo-geiger的工具提供有关crate及其所有依赖项中不安全使用的统计信息。安装后,导航到Cargo.toml文件并分析它:

cargo geiger

字符串
它将下载并扫描所有依赖项,然后将三个符号中的一个分配给一个crate:

Symbols: 
    🔒  = No `unsafe` usage found, declares #![forbid(unsafe_code)]
    ❓  = No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☢️   = `unsafe` usage found


请注意,它只提供了unsafe关键字的用法。但要进行更全面的分析,请使用cargo-crev检查代码以验证包依赖项的可信性和安全漏洞。此外,如果您发现不安全的代码,您可以向safety-dance存储库报告。

分析项目

一旦你检查了你的依赖项,现在是时候评估你的项目了。首先,使用clippy linter工具捕捉常见的错误:

cargo clippy


此外,将#![forbid(unsafe_code)]宏添加到您的文件中,以传达禁止不安全代码块的信息。我不知道您是否可以声明您的软件包(保证)使用安全的Rust。但您可以在删除所有unsafe代码后在README.md文件中显示一个徽章:

[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)


它会帮助其他人发现你的板条箱是安全的。
请注意,Rust中没有100%的内存安全,因为标准库使用(非常谨慎)unsafe块。有时这是不可避免的。在任何情况下,您都应该始终尝试实现安全代码,即使您会损失一点性能增益。

  • 更少的bug,更少的维护痛苦,更多的tRust。*

更多阅读:

相关问题