私有javascript小部件
我正在考虑开始一个新项目。该项目的前提是在我的网站上生成一个小部件,然后将一段javascript复制到你的网站中,viola你就有了小部件 这是对现有服务的一种新的补充,如polldady.com、twig.com和addthis.com 这些服务中的许多都是为公众访问而设计的。这意味着小部件供应商不关心您是否将数据发回给他们。事实上,他们鼓励尽可能广泛地传播小部件 然而,我的服务有一个独特的转折点。在我的例子中,虽然小部件将对公众开放,但我需要确保发起的post请求仅来自预期的站点 由于这些javascript小部件存在xss问题,我需要动态创建一个iframe,在其中呈现我的小部件私有javascript小部件,javascript,security,widget,Javascript,Security,Widget,我正在考虑开始一个新项目。该项目的前提是在我的网站上生成一个小部件,然后将一段javascript复制到你的网站中,viola你就有了小部件 这是对现有服务的一种新的补充,如polldady.com、twig.com和addthis.com 这些服务中的许多都是为公众访问而设计的。这意味着小部件供应商不关心您是否将数据发回给他们。事实上,他们鼓励尽可能广泛地传播小部件 然而,我的服务有一个独特的转折点。在我的例子中,虽然小部件将对公众开放,但我需要确保发起的post请求仅来自预期的站点 由于这些
是否有一个身份验证模型来处理这种类型的交互?首先,使用iframe违反了。使用普通的旧JavaScript,您可以创建一个
并调用.submit()
,在任何地方发出此post请求。事实上,这就是基于POST的CSRF利用的工作原理。您可以检查此POST请求的referer
,但是如果它来自https页面,则此值将为空。(这样你就可以拒绝服务了…)。将document.location
作为POST变量发送是不可取的,因为修改此小部件以报告修改后的值很简单。但是,传入http请求中包含的referer是。
(函数(){
var makeCar=函数(){
//私有变量
var燃料=0;
控制台日志(“呼叫新车”);
//私有方法
函数burnFuel(){
燃料-=10;
控制台日志(“燃烧的燃料[10]”);
}
返回{
检查:函数(){
控制台日志(“检查燃料:+燃料);
},
加速:函数(){
如果(燃油>0){
燃烧燃料();
}否则{
console.log('汽油用完,现在加油');
}
},
填充气体:功能(气体){
如果(燃料)