今年,我与Noam Rosenthal合作,为新的Web平台功能提供标准化:动态调整图像大小和分辨率。成功!但是,旅程是一个陡峭的学习曲线。
虽然我预计浏览器反馈和无法预料的技术障碍等挑战,但我低估了对网络安全和隐私原则的影响。我先前对这些原则的理解不足。
我们的目标是修改图像的默认显示大小。默认情况下,800x600图像以800x600 CSS像素呈现。这是其内在尺寸(或自然尺寸),默认密度为1倍。
在没有CSS或HTML的高,低或可变密度图像时,出现了挑战。对于我的雇主Cloudinary等图像主机来说,这是一个普遍的需求。
我们涉及的解决方案:
- 浏览器在图像资源中读取和应用元数据以声明预期的显示尺寸和分辨率。
- 默认的浏览器尊重此元数据,通过CSS(
image-resolution
)或标记(srcset
的x
描述符)覆盖。
这似乎是听起来 - 灵活的,并建立在现有模式的基础上。但是,HTML规格编辑安妮·范·凯斯特(Anne Van Kesteren)拒绝了它,理由是违反了同基因政策(SOP)。图像方向也需要重新评估。通过CSS/HTML违反SOP来切换EXIF元数据效应的能力。
我对SOP的最初理解仅限于CORS错误。现在,它阻碍了一个重大项目。我必须学习!
我的关键要点:
- SOP不是一个规则,也不是仅关乎CORS错误。
- 这是一种不断发展的哲学,不一致地实施。
- 核心原则是Web安全性和隐私边界是由起源定义的。共同的起源意味着不受限制的互动;否则,适用限制。
- 允许许多交叉互动。网站通常可以跨起源(POST请求)和嵌入交叉原始资源(IFRAMES,图像)写入。但是,在JavaScript中阅读跨原生物资源需要明确的许可(CORS)。
- 至关重要的是,防止交叉读取可以保护用户隐私。每个用户都看到一个个性化的网络,受cookie和本地环境的影响。允许网站通过用户的浏览器读取其他网站的数据将是一个主要的安全缺陷。
SOP主要涉及防止跨原生蛋白读取的问题。默认情况下,通常允许其他跨原生蛋白动作。
图像大小/分辨率问题:
想象一下https://coolbank.com/hero.jpg
,根据用户登录状态返回不同的内容。登录版本可能包含EXIF分辨率信息,而已登录版本则没有。恶意演员可以嵌入此图像,检查其内在尺寸(带有和不带EXIF),推断登录状态以及潜在发射网络钓鱼攻击。
尽管由于CORS而无法访问像素数据(由于CORS),但演员跨越了起源 - 违规。
我们的解决方案:在跨原始环境中,始终应用EXIF修改,使信息无法理解。具有EXIF指定尺寸的图像始终会根据该尺寸呈现,而不管CSS替代如何。
了解SOP阐明了其他Web安全概念:
- 跨站点伪造(CSRF)利用了跨原始写入的默认津贴。
- 内容安全策略(CSP)控件允许嵌入,解决跨站点脚本(XSS)漏洞。
- COP,COEP,CORP和CORB旨在消除交叉互动,解决SOP实施中的不一致并减轻Specter等脆弱性。
简而言之:
- 基于基于原点的互动限制,网络安全性和隐私是可靠的。
- 默认情况下禁止使用交叉读取以保护用户隐私。
- 任何SOP漏洞,无论多么小,都是安全风险。
我的2020年经验强调了SOP的重要性以及对严格的Web安全实践的需求。更安全,更安全的未来需要坚定地辩护这些原则。
以上是我学会了爱相同的原产政策的详细内容。更多信息请关注PHP中文网其他相关文章!

React生态系统为我们提供了许多库,所有库都集中在拖放的相互作用上。我们有反应,反应,可爱dnd,

我可以说我经常使用背景折叠。 IT Wager IT几乎从未在日常CSS工作中使用。但是在斯特凡·朱迪斯(Stefan Judis)的帖子中,我想起了它,

使用RequestAnimationFrame进行动画化应该很容易,但是如果您还没有彻底阅读React的文档,那么您可能会遇到一些事情

听着,我不是GraphQL专家,但我确实喜欢与之合作。作为前端开发人员,它向我曝光数据的方式非常酷。它就像一个菜单


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1
好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版