IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:同源策略

共 3 篇相关文章

IT 累计浏览 2,786

跨域访问和防盗链基本原理(一)

这篇讲的是防盗链的基本原理。作者从网页资源的加载过程切入,指出浏览器呈现一个完整页面需要发起大量GET请求,其中既包括本站资源,也可能包含非本站托管的外部资源。当网站A未经允许直接引用网站B的图片等资源,并从中获益时,就构成了“盗链”,这会消耗B站的流量。 文章核心对比了两种请求情况:直接访问页面时不会携带来源信息,而浏览器加载页面内的外部资源时,会自动在HTTP请求中加入`Referer`头,明确标示出请求的来源页面。资源服务器正是通过检查这个头域,来判断请求是否为本站或允许的来源。 对于非授权来源的请求,服务器可以拒绝提供资源,返回错误图片或提示信息,从而有效防止盗链。文章通过抓包截图直观展示了请求过程,清晰阐述了如何利用`Referer`机制实现基础防护,并为后续讨论跨域访问问题做了铺垫。

IT 累计浏览 2,335

使用window.postMessage实现跨域通信

这篇讲的是如何用 `window.postMessage` 优雅地解决经典的跨域通信难题。 在 HTML5 之前,开发者们为绕过同源策略尝试过不少“偏方”,比如利用 `document.domain`、`iframe` 的 `location.hash`,甚至 Flash 和 `window.name` 的特性。这些方案各有各的限制和使用场景。 文章的核心聚焦于 `postMessage` 这个更现代、更安全的解决方案。它包括两个部分:使用 `otherWindow.postMessage(message, targetOrigin)` 方法向目标窗口发送数据,以及通过监听 `message` 事件来接收数据。文章详细解释了 `message` 和 `targetOrigin` 等参数的含义,以及事件对象中的 `data`、`origin` 等关键属性,提供了清晰的实践指南。 当然,文章也指出了现实中的兼容性考量:`postMessage` 在 IE8/9 中仅支持字符串类型的数据传输(可通过 JSON 序列化解决),而对于更老的 IE6/7,则可能需要回退到 `window.name` 等方案。 总之,对于需要在不同域名窗口或 iframe 间安全传递数据的开发者,这篇文章提供了一份从背景、方案到具体 API 和潜在坑点的实用参考。

IT 累计浏览 2,634

WebView跨源攻击分析

这篇讲的是WebView安全中一个核心但常被忽视的问题:同源策略在本地文件场景下的边界。 作者龚广从浏览器同源策略的基本原理讲起,用一个清晰的对比表格说明了协议、域名、端口三要素如何共同决定URL的同源性,比如“http://www.360.cn:8088”因端口不同就与基准URL非同源。文章的核心深入到了file协议这个特殊领域:当JavaScript通过http页面加载时,file协议通常被视为非同源以阻止读取本地文件;但当JS本身通过file协议加载时,不同浏览器的处理策略则存在显著差异,这为攻击留下了可能的缝隙。 具体到Android WebView,文章通过示例代码展示了四个关键API设置——从是否允许加载file URL,到是否允许file URL中的JS进行跨域访问。这些配置如同一组开关,开错一个就可能让应用暴露在风险中。文章没有停留在理论,而是将同源策略的复杂边界与移动开发的具体实践结合,揭示了WebView安全配置中那些看似细微、却至关重要的决策点。