草庐IT

javascript - 如何 "Lock down"V8?

我是V8的新手,并计划在PythonWeb应用程序中使用它。目的是让用户提交并执行某些JS脚本。显然这是一种安全威胁,所以我正在寻找记录人们可能“锁定”v8的方式的资源。例如,我可以创建一个允许调用的函数白名单吗?或者不允许引用的库黑名单? 最佳答案 如果你使用普通的V8(即不是像node.js这样的东西),就不会有任何危险的功能。JavaScript本身没有包含文件系统函数等的标准库。恶意用户唯一能做的就是创建无限循环、深度递归和内存消耗。 关于javascript-如何"Lockdo

javascript - 将 javascript 应用程序迁移到使用 AMD 的提示(例如 requirejs)

我有一个javascript项目,大多数模块都使用一些第三方库作为“全局”依赖项(特别是jquery和jquery插件)我想“清理”项目(将所有库表示为requirejs依赖项。),但在我的情况下这是一项艰巨的任务(很多文件,很多第三方库)。我怎样才能使迁移更容易/更快?我可以通过将第三方库包装在只加载它们的模块中来“伪装”使用amd依赖项(使用order!插件吗?)将加载第三方库的模块作为模块和直接使用全局的模块混合使用是否安全?如果我想实现自动化,是否可以使用任何工具来“解析”r​​equirejs模块以告诉我是否使用了特定符号?编辑:我最后一个问题的意思是“是否可以自动重写我的j

javascript - 如何在 VSCode 中为 Javascript AMD 模块启用 Intellisense

根据thedocsIntelliSenseacrossCommonJSandAMDmodulesinsideyourprojectfoldersisenabledbyunderstandingyourcode.有没有人有更多关于如何让它工作的信息?我尝试将以下内容添加到我的工作区settings.json文件中,但没有成功。"javascript.validate.module":"amd"谢谢 最佳答案 尝试设置“javascript.validate.baseUrl”设置。//允许配置用于解析模块引用的基本URL(http://

javascript - Node : How to free buffers that get allocated outside of the V8 memory heap

我有一个应用程序,我按顺序从服务器下载mp3文件,将它们临时存储在我的服务器中,然后将它们直接流式传输到客户端,如下所示:functiondownloadNextTrack(){varrequest=http.get('http://mp3server.com',function(response){response.on('data',function(data){fs.appendFile('sometrack.mp3',data,function(err){});});response.on('end',function(){streamTrack('sometrack.mp3'

javascript - node.js v8 垃圾回收似乎没有触发

我很困惑,因为我的应用程序正在泄漏内存。它是一个每分钟处理数十万个数据包的tcp服务器。我检查了代码,对其进行了改进并分析了内存。一切似乎都很好,在低流量的本地测试实际上表明gc正确释放了内存。但是当在实时流量大的服务器上时,它不会。所以我尝试使用expose-gc选项并在每次断开连接时添加强制gc,现在我发现内存不再泄漏或者是否每次都泄漏?所以,我的结论是gc没有激活。我的服务器有3GB的内存,应用程序在短短几个小时内就吃掉了其中的2.8GB。现在使用强制gc,应用程序不再泄漏。它维持着大约200MB的内存。那么,我的问题是,为什么gc没有被触发? 最佳答

javascript - V8 是否检测 int 变量并更有效地处理它们?

这是关于Node.JS的更多内容,它使用V8引擎。这是也用于GoogleChrome的JavaScript引擎。我听说V8非常快,不仅对于Node,对于浏览器也是如此。但是,我注意到关于JavaScript的一件事是,类型没有针对变量进行编码。要在Java中实现这一点,您需要一个Object变量类型来处理所有内容。这在例如for循环中的效率会大大降低:for(vari=0;i我的问题是,V8如何处理变量类型?它是否知道此i变量始终是int或long?(我认为这不太可能,因为i++能够将long转换为double。)或者V8是否以无关紧要的方式处理事情?我认为JIT编译器创建的一些简单示

javascript - 为什么在这种情况下 v8 会耗尽内存?

根据node.js文档,一个Node在32位版本上有512meg的限制,在64位版本上有1.4gig的限制。ChromeAFAICT的限制类似。(+/-25%)那么,为什么这段代码从不使用超过~424meg的内存却会耗尽内存?这是代码(代码是废话。这个问题不是关于代码在做什么,而是关于代码为什么失败)。varlookup='superCaliFragilisticExpialidosiousThispartdoesnotrealllymattersd';functionencode(num){returnlookup[num];}functionmakeString(uint8){va

javascript - 什么是 Node.JS 的 getHiddenValue 和 setHiddenValue 函数,它们包装了 V8 的 GetPrivate 和 SetPrivate?

由于非常复杂的原因,我正在研究以更好地了解Node.JS的内部结构,并发现了两个用途不明的函数。这些是功能以及如何访问它们。process.binding('util').setHiddenValueprocess.binding('util').getHiddenValue来自theirnativecodedeclarations,很明显它们包装了以下V8函数:v8::Object::SetPrivatev8::Object::GetPrivate我还制作了一个小片段,展示了他们可以做什么。'usestrict';varbinding=process.binding('util');

javascript - 匹配行首时 JavaScript V8 正则表达式引擎中的错误?

我有一个非常漂亮的工具,underscore-cli,这是打印出帮助/使用信息时最奇怪的行为。在usage()函数中,我这样做是为了缩进文本block(例如,选项):str.replace(/^/,"");这个正则表达式,除了非常明显之外,还直接来自TJHollowaychuk的commander.js代码。正则表达式是正确的。然而,我在使用文本的中间插入了奇怪的空格。像这样:Commands:...valuesRetrieveallthevaluesofanobject'sproperties.extendOverridepropertiesintheinputdata.defaul

javascript - 如何将结构从 V8 C++ 函数返回到 javascript 模块

我是Javascript和V8库的新手。我的要求是调用C++函数并将C结构返回给Javascript模块。structempDetails{intempNo;stringempName;};v8::HandlegetDetails(constv8::Arguments&args){if((args.Length()!=1)||!args[0]->IsUint32()){returnv8::ThrowException(v8::Exception::Error(v8::String::New("Invalid>arguments.")));}uint32_tuserId=args[0]-