我正在构建一个网站,任何人都可以通过 postMessage 命令与我的 iFrame 进行交互(即沙盒函数,而不是窗口的完全控制)。如何才能做到这一点而不通过 XSS 暴露访问者的 cookie?https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Security_concerns
假设我有以下接收函数:
var secret = localStorage.getItem("secret");
window.addEventListener(message,function(e){
// any e.origin is allowed
if(e.func=="doX"){
var string = e.data.string1 * e.data.string2;
}else if(e.func=="doY"){
// another javascript function, no DOM interaction
config[e.data.key] = e.data.value;
}else if(e.func=="doZ"){
document.getElementById("app")=e.data.title
document.getElementById("description")=e.data.description
}
})
Run Code Online (Sandbox Code Playgroud)
我在 Mozilla 页面上读到,允许来自任何来源的请求是相当危险的。如何针对 doX、doY 和 doZ 场景正确防止 XSS?
我也尝试过。这些功能安全吗?
var secret = localStorage.getItem("secret");
window.addEventListener(message,function(e){
// any e.origin is allowed
if(typeof e.func!=Number) return;
if( e.func < 0 || e.func > 2) return;
if(e.func==0){ // we will …Run Code Online (Sandbox Code Playgroud) 很难为javascript中的Web Crypto API设置熵或种子。
为什么会这样呢?这会使开发人员感到困难吗?
设置种子可让您确定地运行样本数据。Web Crypto API也恰好被烘焙到我正在使用的库中。我尝试实现的库的这一功能也几乎被放弃了,因为这个问题有多难。
我担心chrome扩展程序为用户提供的代码与其开源回购中的代码不同。扩展名为MetaMask,这是一种加密货币钱包,最近发现它正在向用户访问的每个网站注入唯一的标识符,尽管他们并未这么做。我现在听说,MetaMask也可以充当DNS解析器,这对于欺骗性应用程序而言具有强大的功能。
对我来说,从网上商店下载此Chrome扩展程序并将其哈希值与开源代码的构建进行比较的最佳方式是什么?是否有任何现有的Chrome扩展程序或网站可让您更轻松地完成此操作,即直接将github存储库与chrome网上商店中的内容进行比较?
cross-domain ×1
cryptography ×1
firefox-addon-webextensions ×1
iframe ×1
javascript ×1
ubuntu ×1
xss ×1