G.SAF.MEM.04 内存中的敏感信息使用完毕后应立即清零
【级别】 要求
【描述】
内存中的口令、密钥等敏感信息使用完毕后应立即清零,避免被攻击者获取。 为防止内存清零操作被编译优化,推荐使用 std::ptr::write_volatile
函数。
【正例】
Rust
struct Buffer {
password: [u8; 16],
}
impl Buffer {
fn new() -> Self {
Self { password: [1; 16] } // 初始化缓冲区
}
}
impl Drop for Buffer {
fn drop(&mut self) {
unsafe {
std::ptr::write_volatile(
&mut self.password.as_slice(),
vec![0; self.password.len()].as_slice(),
);
}
}
}
fn main() {
let _buffer = Buffer::new(); // 创建缓冲区实例
// 当 buffer 离开作用域时,会自动调用其 drop 函数清空内存
}