想象一个场景,我想连续调用用户提供的Javascript代码,如下例所示,其中getUserResult是某个用户(不是我自己)编写的函数:for(vari=0;i如何在浏览器和/或Node.js中执行此类代码,而不存在任何安全风险?更一般地说,如何执行不允许修改甚至读取当前网页或任何其他全局状态的Javascript函数?是否有类似浏览器内“JS虚拟机”的东西?JSFiddle如何确保您不能运行任何恶意代码(至少它可以钓鱼您的登录名,在页面的生命周期内运行机器人,如果不是做更糟糕的事情)?或者它根本不能确保这一点? 最佳答案 经过
我正在制作一个网络应用程序。它加载的一些文件包含纯静态.JSON数据。我将jQuery.ajax()(jQuery1.5.2)与dataType:'json'和cache:true一起使用。一切正常,所有文件都已加载。我还配置了缓存list来缓存这些JSON文件(除了css、js和图像)。那里的一切也都运行良好——当用户访问我的站点时,我需要的所有文件都被正确缓存(我有applicationCache事件处理程序来确认一切正常)。我已经在GoogleChrome中测试了所有内容,我可以看到所有文件(包括JSON文件)都被缓存了。当我断开网络连接时,一切正常(jQueryajax调用自动
我正在用HTML和JavaScript编写一个用于iPhone的网络应用程序。我想要实现的是防止应用程序弹性滚动(滚动超过页面范围并弹回)。但是,我的应用程序需要一些较长的元素才能滚动(该应用程序有一个长Canvas)。我已经尝试了很多在互联网上其他地方找到的这个问题的答案,但是,所有这些解决方案要么使用了JQuery,完全禁用了滚动,要么使用了Phonegap,要么只是在IOS7上根本不起作用。我该怎么做? 最佳答案 有一种方法可以不用jQuery来实现:document.body.addEventListener('touchm
我们的构建脚本创建了一个带有一些嵌入式javascript的HTML日志。当我在InternetExplorer中打开它时,我看到IE已阻止运行“脚本或activex控件”的黄色警告栏。因为它是一个本地文件,我无法将它添加到受信任的站点(IE需要一个域)。我不想更改默认区域的安全设置。知道如何永久解锁它吗?IE版本在XPPro上是7.0.5730.13。 最佳答案 嵌入MarkoftheWeb: 关于javascript-如何告诉IE我磁盘上的HTML文件没有安全风险?,我们在Stack
我有两个Ember模型:一个items和comments.用户将发布一个项目,其他用户将能够对该项目发表评论。我无法在firebase中设置允许name的安全规则和description只能由当前用户写入,但允许comments由任何登录用户写入。项目//app/models/item.jsexportdefaultDS.Model.extend({name:DS.attr('string'),description:DS.attr('string'),comments:DS.hasMany('comment'),user:DS.belongsTo('user')})评论//app/m
根据我正在阅读的内容,defer上的属性现在是widelysupported但我从未见过它被使用或提及。如果您不需要延迟内联脚本并且不需要动态添加脚本(whichcauseproblemsinIE9-andSafari4-),看来您可以可靠地使用它并拥有scriptsrunrightbeforeDOMContentLoaded按指定顺序(async不会发生)这基本上是大多数网站所需要的:在DOMready上按顺序运行几个或多个外部脚本。例如:为什么它没有被广泛使用?我现在真的可以使用它吗? 最佳答案 我做了更多的研究,发现defer
依靠Function.prototype.toString返回一个将解析为有效javascript函数(对于用户定义的函数)的字符串是否安全?是否有任何常用的javascript引擎在以字符串形式表示函数对象方面偏离了规范?我看过thisquestion,但我不确定它是否在问同样的事情。我不在乎所有实现中的格式是否完全相同或其他什么,我更担心一些缩小的js引擎只是剥离了整个函数体......另一个relatedquestion,但相关性不够密切,无法为这个问题提供令人满意的答案。 最佳答案 我认为它是安全的,因为它是一个标准。每个严
我们有一个在POS终端上运行的应用程序,它应该从在同一台机器上运行的应用程序接收数据,同时显示来自通过HTTPS加载的远程站点的内容。要从本地应用程序接收数据,我们要使用websockets,到目前为止工作正常。但是,当我们显示的网站是通过HTTPS加载时,websocket连接也需要加密。因为我们无法真正获得localhost的正确证书,所以我们只使用自签名证书。但是Chrome不会连接到使用自签名证书的websocket。我们如何解决这个问题?我们不能使用未加密的websocket,不能为加密的使用自签名证书,也不能为localhost获取签名证书。我缺少什么选项?
我正在尝试从服务器向客户端发送(中继)连续的utf-8数据流。虽然我可以看到到达服务器的数据,但我无法将其通过管道传输到套接字并将其转发给客户端。节点服务器,vario=require('socket.io')(server);app.io=io;vardsteem=require('dsteem')vares=require('event-stream')varclient=newdsteem.Client('https://api.steemit.com')varss=require('socket.io-stream');varoutBoundStream=ss.createSt
ChromeAPI的list版本2移除了执行不安全评估的能力。这意味着使用eval函数或通常从文本动态创建函数。似乎大多数(如果不是全部)Javascript模板引擎都这样做。我使用的是Jaml,但我尝试了其他几种方法,例如backbone.js(它实际上使用了underscore.js的模板引擎),但没有成功。ThiscommentontheChromiumproject似乎表明有很多图书馆都受到此影响。我认为Angular.js有一个CSP安全模式,但Angular.js对于我们需要的东西来说实在是太大了。我们只需要一个相当基本的模板引擎,不需要模型或Controller等。有人知