- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个项目,我的安全团队提出了一个问题,涉及我们在字符串中捕获的敏感信息以及该信息在内存堆中的存在情况。
根据我在互联网上发现的最佳实践,将所有变量清除为空,以清除内存中的原始值。但字符串是不可变的,即使我们将变量设置为 null,它们也会存在于内存中。所以字符串的值将永远存在。
Image demo for string memory allocation
所以我认为这个值会保留在内存中直到下一个 GC 周期。设置 null 不会立即清除它。
我的一个建议是,不要使用字符串来完成此类任务。他们建议我在nodejs 中使用缓冲区。
现在我有一些假设和一些问题需要建议。
app.use(bodyParser.json({
verify: function(req, res, buf, encoding) {
req.rawBody = buf;
console.log("rawBody", req.rawBody); // print buffer info
console.log("rawBody in json", JSON.parse(req.rawBody.toString())); // print json format of request body
}
}));
callSomeSecurityFun (Buffer.from(request.body.password));
function callSomeSecurityFun (passwordBuf) {
var encryptedPassword = someencryptionLib.encryptPass (passwordBuf.toString(),'<some key>', '<some algo>');
passwordBuf.fil (0);// clearing the buffer.
return encryptedPassword;
}
想法/建议?
斯戈亚尔
最佳答案
But Strings are immutable and they will be there in memory even if we set variables to null. so the value of string will always be there.
与任何其他值一样,该字符串将一直存在,直到垃圾收集器被激活为止。将变量设置为 null
会导致该值变成垃圾(即没有任何东西指向它),因此最终会从堆中清除。
关于javascript - Nodejs/expressjs 中请求参数的字符串不可变性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037482/
我遇到了 python 问题..我有一个二叉树节点类型: class NODE: element = 0 leftchild = None rightc
这个问题已经有答案了: Local (?) variable referenced before assignment [duplicate] (3 个回答) 已关闭 4 年前。 我有一些来自初学者编
class TestClass(object): def __init__(self): self.value = 100 self.x = lambda: s
谁能解释为什么下面的代码会编译,但如果我注释掉一行,那么它不会,即使代码本质上在做同样的事情? struct OtherStruct { x: i32, } struct Inner { bl
我有一个在同一主机上运行的 TCP 客户端和服务器。客户端发送消息,服务器确认该消息,然后客户端发送下一条消息。在任何时刻,都只有一条未处理的未确认消息。消息大小为 1KB。家庭计算机运行CentOs
我是 Panda 的 Dataframe 的新手,如果有人可以通过以下示例向我简要讨论 DataFrame 的可变性,我将不胜感激: d1=pd.date_range('1/1/2016',perio
在 C++ 编程语言第 4 版的第 16.2.9.4 节“通过间接实现的可变性”中,有一个使用间接代替 mutable 关键字进行惰性求值的示例的草图。 struct cache { bool
我对 Haskell 了解不多,但从我读到的关于计算的可变性(例如:函数返回函数、复杂的 monad 和函数等)的内容来看,你似乎可以做很多元编程,即使在运行时。 如果像函数和 monad 这样的一切
在 Python 中,globals() 返回全局符号表的表示,而 locals() 返回本地状态的表示。虽然两者都返回字典,但对 globals() 的更改会在全局符号表中生效,而对 locals(
我正在关注斯坦福算法 MOOC 并尝试使用 Haskell 解决问题。许多算法需要大量的数据处理,纯解决方案的运行速度比人们为命令式语言引用的基准要慢得多。所以我觉得我需要使用可变数据结构。 大多数
在 react 井字游戏中 tutorial ,为什么他们必须使用 Array.slice()? handleClick(i) { const squares = this.state.square
在 react 井字游戏中 tutorial ,为什么他们必须使用 Array.slice()? handleClick(i) { const squares = this.state.square
在 C# 中,我想制作“智能”枚举,这在 Java 中是可能的,其中有更多信息附加到枚举值,而不仅仅是底层 int。我偶然发现了一个创建类(而不是枚举)的方案,如以下简单示例所示: public se
我是一名优秀的程序员,十分优秀!