Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何确保内存被覆盖-Javascript_Javascript_Security_Web Applications - Fatal编程技术网

我如何确保内存被覆盖-Javascript

我如何确保内存被覆盖-Javascript,javascript,security,web-applications,Javascript,Security,Web Applications,在将敏感信息加载到内存中时,我希望确保在加载后将其安全地擦除。我正在开发一个Javascript web应用程序,我希望确保在值更改时安全地覆盖我的变量。只是简单地重新分配足够的值来执行此操作,或者需要做一些额外的事情来覆盖内存中的值 或者这是一个无望的原因,将永远导致我的应用程序中的安全问题 我认为这是一个会因浏览器而异的东西。是否所有主要浏览器都会防止其他进程读取浏览器内存?这取决于您需要的安全级别。如果您的意思是,将来在同一页面上运行的Javascript程序无法访问它,那么您所要做的就是

在将敏感信息加载到内存中时,我希望确保在加载后将其安全地擦除。我正在开发一个Javascript web应用程序,我希望确保在值更改时安全地覆盖我的变量。只是简单地重新分配足够的值来执行此操作,或者需要做一些额外的事情来覆盖内存中的值

或者这是一个无望的原因,将永远导致我的应用程序中的安全问题


我认为这是一个会因浏览器而异的东西。是否所有主要浏览器都会防止其他进程读取浏览器内存?

这取决于您需要的安全级别。如果您的意思是,将来在同一页面上运行的Javascript程序无法访问它,那么您所要做的就是重新分配指向它的变量。如果你的意思是,安全到计算机的硬件级分析无法找到信息,Javascript不是你想要的语言。

它取决于你需要的安全级别。如果您的意思是,将来在同一页面上运行的Javascript程序无法访问它,那么您所要做的就是重新分配指向它的变量。如果你的意思是,安全到计算机的硬件级分析找不到信息,Javascript就不是你想要的语言。

Javascript甚至不支持指针或任何控制内存的方法。您无法确保确实发生了覆盖。你所能做的最好的事情就是取消设置变量,并向垃圾收集器上帝祈祷,它会用新的东西重新利用他们所拥有的空间

另外,无论如何,试图在内存中保护这些信息是毫无意义的,因为:

  • 你主要关注的应该是它将通过网络传输
  • 只有在客户端计算机受损的情况下,才能从内存中读取数据
  • 简单地调试或掺杂JavaScript代码以使其向您提供信息更容易

  • 如果您依赖此JavaScript“安全性”来保护您不希望用户访问的信息,请立即停止,因为您不能。即使你混淆了代码,有经验的程序员也不会花10分钟来撤销它,它甚至不符合要求,根本就没有安全性。

    JavaScript甚至不支持指针或任何控制内存的方法。您无法确保确实发生了覆盖。你所能做的最好的事情就是取消设置变量,并向垃圾收集器上帝祈祷,它会用新的东西重新利用他们所拥有的空间

    另外,无论如何,试图在内存中保护这些信息是毫无意义的,因为:

  • 你主要关注的应该是它将通过网络传输
  • 只有在客户端计算机受损的情况下,才能从内存中读取数据
  • 简单地调试或掺杂JavaScript代码以使其向您提供信息更容易

  • 如果您依赖此JavaScript“安全性”来保护您不希望用户访问的信息,请立即停止,因为您不能。即使您混淆了代码,有经验的程序员也不会花10分钟来撤销它,它甚至不符合以下条件:,这根本就没有安全性。

    如果你想替换一个值,那么就给它分配一个不同的值——后台内存结构发生了什么,开发人员完全搞不清楚,因此无法判断发生了什么(除非代码是开源的,你想翻找内部)它是否在每个浏览器中都是一致的(值得怀疑),或者它是否被安全地处理(除了在运行时自己戳内存之外,同样值得怀疑),但是对于标量值,它“不应该”重新分配内存,因此分配不同的值可能就足够了

    如果要删除对JavaScript中对象属性的引用,可以使用:

    var x = { data: 'here', other_stuff: 'there' };
    // do stuff
    delete x.data; // remove the data attribute from the x object.
    // do more stuff
    delete x; // remove the x attribute from the current scope.
    
    在这种情况下,
    delete
    关键字与内存管理无关;相反,它只是从对象中删除属性,因此它们不能被引用。如果删除了对对象的所有引用,则该对象将被安排进行垃圾收集,内存可能会被释放,但您无法控制此过程


    基本上,如果您想要(取消)分配/覆盖内存的安全性,那么就不要使用JavaScript。

    如果您想要替换一个值,那么只需为它分配一个不同的值-后台内存结构发生的事情对于开发人员来说完全是模糊的,因此无法判断发生了什么(除非代码是开源的,并且您希望在内部进行搜索)以及它在每个浏览器中是否一致(值得怀疑),或者它是否被安全地处理(除了在运行时自己戳内存之外,同样值得怀疑),但是对于标量值,那么它“应该”不要重新分配内存,因此分配不同的值可能就足够了

    如果要删除对JavaScript中对象属性的引用,可以使用:

    var x = { data: 'here', other_stuff: 'there' };
    // do stuff
    delete x.data; // remove the data attribute from the x object.
    // do more stuff
    delete x; // remove the x attribute from the current scope.
    
    在这种情况下,
    delete
    关键字与内存管理无关;相反,它只是从对象中删除属性,使其无法被引用。如果删除了对对象的所有引用,则该对象将被安排进行垃圾收集,内存可能会被释放,但您无法控制此过程


    基本上,如果您想要(de-)的安全性分配/覆盖内存,然后不要使用JavaScript。

    你真的无法控制JavaScript运行时如何使用内存。是的,我知道我对这方面的控制非常有限。我只是想知道这是主流浏览器会自动完成的事情,还是至少有一种通过Javascript.你真的无法控制什么是