当前位置: 首页 > 科技观察

使用RustforWindows构建更安全的软件_0

时间:2023-03-13 06:45:24 科技观察

【.com快译】微软对Rust感兴趣已有一段时间,研究其类型安全和内存作为系统编程任务中C和C++的替代安全语言。随着越来越多的Microsoft业务依赖于云服务,像Rust这样的工具对于构建这些服务、提高可靠性和安全性将至关重要。系统编程工具起源于操作系统开发,您的代码和硬件之间的需求非常小,与运行时环境和垃圾收集相关的开销增加了不必要的延迟。这些属性不仅适用于操作系统,而且对于构建任何可靠的应用程序都很重要:您希望您的代码安全运行,不会导致内存泄漏,并使攻击者难以脱离代码自己的部分系统的内存。通过使用Rust构建,您可以使代码更安全。这是第一道防线,内置于用于构建代码的语言和工具中。也许您正在构建驱动程序或银行软件,重要的是您的代码值得信赖并且您还需要管理风险。因此,在你可能使用JavaScript的地方,你可以使用在WebAssembly中运行的Rust,在你可以使用C或C++的地方,你可以使用Windows或Linux版本。微软、Rust和Windows微软对Rust的承诺体现在其作为Rust基金会创始成员的身份,以及最近几个月加入微软的语言和工具开发人员的数量。微软现在已经宣布了自己的一套工具,用于使用Rust构建和开发Windows代码,基于相同的Windows功能,允许它提供C++/WinRTAPI投影。RustforWindows的核心是支持WindowsAPI元数据动态生成API代码的Rustcrate。您将需要在您的开发环境中使用C++构建工具,或者使用VisualStudioCode中的独立工具,或者使用VisualStudio的完整安装。这确实意味着它不是免费软件:您需要VisualStudio许可证才能使用C++工具。(如果您正在构建开源项目或者是个人开发人员,可以使用免费的社区版。)RustforWindows编译器可从Rust网站下载32位和64位版本。rustup工具会为您的开发系统下载所有合适的组件,并且一个简单的命令行工具有助于自定义安装。如果您使用Code,请安装几个额外的扩展:rust-analyzer,它添加了用于IntelliSense代码高亮和提示的Rust语言服务器,以及用于调试的CodeLLDB或Microsoft的C/C++扩展。一旦就绪,您就可以开始使用RustforWindows。对于使用RustforWindowscrate的Windows开发人员来说,最重要的工具之一是它对语言投影的支持。该技术允许开发工具从Windows为其SDK提供的元数据生成特定于语言的API。借助语言投影支持,Microsoft无需为每种支持的语言编写API,从而为WindowsSDK增加越来越多的复杂性,并使每种支持的语言更难跟上Windows。这种技术确保Rust获得Windows支持,它只需要适当的语言投影,然后根据需要自动生成API。微软不需要为支持的语言提供SDK,任何新语言只需要自己的语言投影就可以被Windows支持。这种开发任务的复杂度要低得多;随着新的WindowsAPI的发布(例如在ProjectReunion中),API团队只需要元数据定义。您可以使用VisualStudio和VisualStudioCode中的Rust工具编写可在任何地方运行的Rust模块,但如果您打算将其用于Windows开发,则需要安装RustforWindows工具以访问WindowsAPI。微软的Rust服务是GitHub上的一个开源项目。当前版本作为Rustcrate提供,可以从Rustcrate存储库安装。在Windows上使用RustWindowsRustcrate使用标准的Rust功能,作为一个包从Rust的Cargo安装。安装后,您可以使用Rust的构建工具为您要在项目中使用的WindowsAPI创建适当的绑定。这种方法仅为您要使用的API提供代码。您可以在添加API时添加新绑定,删除不需要支持的任何绑定。仅在需要时提供API支持可为您的代码增加额外的安全层。它无法调用不受支持的API,从而最大限度地减少了任何攻击面。Windows上的Rust开发仍在进行中,因此您有时需要跳出您通常的开发环境。需要使用命令行从Cargo创建新项目。创建项目后,创建一个绑定箱来托管RustforWindowsAPI。这是在项目的cargo.toml文件中创建的,添加了Windowscrate的依赖项。这将为您的代码安装适当的版本。需要手动更新新版本的版本号(当前版本号为0.8.0)。RustforWindows如何生成API绑定的有趣之处在于,您可以专注于要使用的API命名空间部分。选择名称空间后,将其添加到绑定文件夹中的build.rs文件中。Microsoft提供了一个宏来创建API绑定,使用它会自动创建所需的任何依赖项,并且许多关键API都内置在Windowscrate中,无需为标准API(如Windows.Foundation)构建绑定即可使用。WindowsAPI的文档可以帮助您入门。然后,您可以在代码中添加指向绑定文件的链接,您可以随时开始使用它们。这个过程真正重要的是,您可以混合和匹配您使用的API,在同一个应用程序中使用Direct3D进行GPU计算,使用XAML工具进行UI。它还为新的API做好了准备,在它们发布后利用它们的元数据。随着微软通过将WindowsSDK与Windows发布周期分离来加速API开发,这种方法将变得越来越重要。结果是在Rust中构建完整的Windows应用程序的灵活而强大的方法。通过使用适用于Windows的Rust来处理API调用,您的代码将更安全并为将来对WindowsAPI的更改做好准备,只需要在发布新的和更新的API时重新构建和重新编译。原标题:BuildmoresecuresoftwarewithRustforWindows,作者:SimonBisson