私人JavaScript小部件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了私人JavaScript小部件相关的知识,希望对你有一定的参考价值。
我正在考虑开始一个新项目。该项目的前提是在我的网站上生成一个小部件,然后将一段javascript复制到您的网站中,然后中提取您的小部件。
这是polldady.com,twiig.com和addthis.com等现有服务的新动力。
许多此类服务旨在公开访问。这意味着小部件供应商并不关心您是否将数据发回给他们。事实上,他们鼓励尽可能广泛地传播小部件。
但是我的服务有一个独特的变化。在我的情况下,虽然小部件将向公众开放,但我需要确保发起的帖子请求仅来自预期的站点。
由于这些javascript小部件的xss问题,我需要动态创建一个iframe来呈现我的小部件。
是否有处理此类交互的身份验证模型?
首先,使用iframe违反了Same Origin Policy。使用普通的旧JavaScript,你可以创建一个<form>
并调用.submit()
在任何地方发出这个帖子请求。实际上,这就是基于POST的CSRF漏洞利用的工作原理。您可以检查此POST请求的referer
,但是如果它来自https页面,则此值将为空。 (然后你可以拒绝服务......)。将document.location
作为POST变量发送是不可取的,因为修改此小部件以报告修改后的值是微不足道的。但是,传入的http请求中包含的引用是off limits to the website's operator。
(function(){
var makeCar = function(){
// private variable
var fuel = 0;
console.log("call new car");
// private method
function burnFuel(){
fuel-=10;
console.log('Burned fuel [10]');
}
return {
check: function(){
console.log("checkfuel:"+fuel);
},
accelerate : function(){
if(fuel > 0){
burnFuel();
}else{
console.log('Out of gas. Fill now.');
}
},
fillGas : function(gas){
if(fuel <= 100){
fuel += gas;
}else{
console.log('Reached capacity. Stop spilling.');
}
}
}
};
var carA= makeCar();
carA.check();
carA.fillGas(200);
carA.check();
carA.accelerate();
carA.check();
carA.accelerate();
carA.check();
carA.fillGas(400);
carA.check();
}());
以上是关于私人JavaScript小部件的主要内容,如果未能解决你的问题,请参考以下文章
此应用小部件片段中所有意图 (PendingIntents) 的逻辑流
AppCompat v22.1.0 没有为片段正确主题化所有 xml 小部件
如何更新导航抽屉中的有状态小部件,同时在 Android 中保持与片段相同的类?