一、什么是同源策略
同源策略,是由Netscape提出的一个著名的安全策略,现在所有支持javascript的浏览器都会使用这个策略。
为什么需要同源策略,这里举个例子:
假设在浏览器的一个tab窗口中打开了银行网站,在另外一个tab窗口中打开了一个恶意网站,而那个恶意网站引入了一个javascript脚本。如果没有同源策略,那么这个脚本就可以获取或篡改银行网站上的信息
同源策略是由浏览器来实现的。浏览器在执行一个javascript脚本之前,首先会负责进行“同源检查”,如果javascript和页面不是同源的,浏览器就会拒绝执行这个javascript脚本
二、chrome extension违反了同源策略吗
function click(e) {
chrome.tabs.executeScript(null, {
code : "document.body.style.backgroundColor='red'"
});
window.close();
}
上述js代码,在点击chrome扩展中的一个按钮时,会改变当前TAB页面里的背景颜色
利用chrome.tabs.executeScript()方法,还可以做很多事情,当然也包括获取document里的信息
看起来,chrome extension违反了同源策略
但是实际上并不是这样,chrome通过2个层面来保证安全
首先chrome扩展是需要通过google审查的,并不是随意发布的,所以比来路不明的javascript安全
其次,在开发chrome extension时,需要在manifest文件中进行权限声明:
"permissions": [
"tabs",
"notifications",
"http://localhost:8080/",
"http://www.baidu.com/"
]
因此,在用户选择安装这个extensions时,就会给出警告,类似于android上的权限声明机制
所以,chrome extensions并不是违反javascript同源策略的
3、chrome.tabs、chrome.windows、document、window
这几个概念有点混淆,顺便在此澄清一下
document和window是javascript里特有的概念,不是浏览器特有的
window是窗口,document是窗口里加载的文档模型(DOM)
详细的介绍,可以看这篇文章:
http://eligeske.com/jquery/what-is-the-difference-between-document-and-window-objects-2/
在具体的浏览器实现里,则有windows和tabs的区别
很早以前(IE6之前),浏览器的一个窗口只能打开一个网页;现在基本所有的浏览器都支持TAB了
chrome也提供了API,来控制windows和tabs,分别是chrome.windows和chrome.tabs
4、扩展和插件(extensions and plugins)
扩展和插件不同
扩展主要用javascript开发,可以用chrome://extensions管理
插件用NPAPI开发,语言是C++,可以用chrome://plugins管理
- 大小: 6.5 KB
分享到:
相关推荐
1. **Chrome插件开发**:Chrome插件基于Chrome的Web扩展API(如chrome.tabs、chrome.storage等)构建,允许开发者访问浏览器的各种功能,如浏览器历史、书签、多进程架构等。 2. **Vue.js框架**:Vue.js提供一套...
4. **内容脚本和背景脚本的通信**:由于同源策略,内容脚本与背景脚本不能直接通信。它们通常通过消息传递(`chrome.runtime.sendMessage` 和 `chrome.runtime.onMessage` API)进行交互,实现数据交换或命令传递。 ...
5. 运行时API:包括`chrome.runtime`、`chrome.tabs`、`chrome.bookmarks`等,用于与浏览器进行交互。 6. 通信机制:Chrome插件提供了`chrome.runtime.sendMessage`和`chrome.runtime.connect`等方法,实现不同脚本...
9. **跨域问题**:由于同源策略限制,内容脚本不能直接与跨域的网页通信,但可以使用`chrome.tabs.sendMessage`和`chrome.runtime.onMessage`来实现页面与背景脚本间的跨域通信。 10. **用户反馈与评价**:用户可以...
6. **跨域请求**:Instagram作为一个外部网站,可能会有同源策略限制。JavaScript的跨域请求技术,如JSONP或CORS,可以帮助扩展绕过这些限制,获取和发送数据。 7. **用户界面设计**:虽然JavaScript主要用于后端...
开发者可以使用JavaScript调用Chrome提供的API,如存储数据(chrome.storage)、处理浏览器事件(chrome.tabs.onUpdated)或者操作DOM(在内容脚本中,受限于沙箱环境)。 沙箱环境的安全性体现在以下几个方面: 1...
6. **Chrome API**:Chrome提供了一系列API,如`chrome.tabs`和`chrome.storage`,允许插件与浏览器进行交互,如获取当前访问的网页URL,存储和读取用户数据。 7. **跨域请求**:由于安全限制,JavaScript在同源...
- **跨域策略**:由于安全原因,扩展中的JavaScript受到同源策略限制,需要通过`chrome.tabs.executeScript`等方法注入内容脚本来跨域操作页面。 - **消息传递**:使用`chrome.runtime.sendMessage`和`chrome....
2. **内容脚本**:这些是运行在网页上下文中的JavaScript脚本,可以与网页DOM交互,但受到同源策略的限制。内容脚本通过`chrome.tabs` API与背景脚本通信。 3. **背景脚本**:运行在单独的全局环境中,不依赖于任何...
它允许开发者访问浏览器提供的API,如chrome.storage API用于数据存储,chrome.tabs API用于与当前活动标签交互,以及chrome.runtime API来管理扩展的生命周期。在“Screenshots-of-the-Chrome-Extension-master”这...
但由于同源策略的限制,内容脚本不能直接访问背景脚本,它们之间需要通过`chrome.runtime.sendMessage`和`chrome.runtime.onMessage`进行通信。 此外,Chrome扩展还可以包含浏览器动作、页面动作、选项页面等组件,...
- **跨域问题**:内容脚本与网页之间存在同源策略限制,但可以使用`chrome.tabs` API的`executeScript`方法跨域注入代码,或者通过`message passing`与背景脚本通信,再由背景脚本与网页进行交互。 - **权限管理**...
2. **内容脚本**:内容脚本是运行在网页上下文中的JavaScript代码,可以直接操作网页DOM,但受到同源策略限制。它们可以用来监听和修改页面事件,实现诸如广告拦截、页面增强等功能。 3. **背景脚本**:背景脚本在...
为了确保扩展的安全性和用户隐私,开发者需要遵循Chrome的沙盒环境和同源策略,避免不安全的网络请求和非法数据访问。同时,扩展应该有明确的隐私政策,告知用户哪些数据会被收集以及如何使用。 总的来说,"chrome-...
3. **内容脚本**:这些脚本直接注入到用户访问的网页中,可以与网页DOM交互,但受到同源策略的限制。 4. **弹出窗口(popup)**:这是一个HTML页面,通常包含一些UI元素,用户可以通过点击浏览器工具栏上的扩展图标...
- **内容脚本**:内容脚本是运行在网页上下文中的JavaScript代码,可以直接操作网页DOM,但受到同源策略限制,不能直接访问浏览器API。通常通过`chrome.runtime`或`chrome.tabs` API与背景页面通信。 - **背景页面*...
3. 跨域问题:由于同源策略限制,内容脚本通常无法直接访问其他源的数据,但Chrome扩展可以通过特定机制绕过这一限制。 4. 消息传递:扩展的背景脚本和内容脚本之间,或者扩展与页面之间,常常需要通过消息传递来...
4. **数据存储**:由于浏览器的同源策略,插件不能直接在不同域之间共享数据。因此,插件可能需要使用Chrome的`chrome.storage` API来保存用户的设置和历史记录,确保这些信息在插件使用过程中持久化。 5. **权限...
1. **跨域请求**:通过`XMLHttpRequest`或`fetch`API,扩展可以绕过同源策略,获取任何网站的数据。 2. **Chrome API调用**:可以使用`chrome.*`对象访问Chrome提供的各种API,如`chrome.tabs`用于处理标签,`...
3. **内容脚本(content script)**:这些脚本在用户访问的网页上下文中运行,可以操作DOM,但受到同源策略的限制。它们通常用于修改网页内容或提取数据。 4. **浏览器动作(browser action)/页面动作(page ...