对特定 URL 强制使用 HTTPS

2023-11-21

这应该很快...这是我当前的 .htaccess 文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

我需要做的是确保如果http://www.mydomain.com/cart/达到了,需要强制HTTPS...所以/cart/以及里面的任何东西/cart/


一旦请求发送至http://www.mydomain.com/cart/,如果请求中有任何敏感数据,那就太晚了。强行把它打破!至少,它会告诉您您的链接有问题。之前的答案中有更多详细信息:

  • https://stackoverflow.com/a/8765067/372643
  • https://stackoverflow.com/a/8964190/372643

[...] 当请求到达服务器时, 太晚了。如果存在 MITM,则他已完成攻击(或部分攻击) 它)在您收到请求之前。

到那时你能做的最好的事情就是回复而不包含任何有用的内容。在 在这种情况下,重定向(使用 301 或 302 以及 Location 标头) 可能是合适的。然而,如果用户(或 即使您作为开发人员)也会忽略警告(在这种情况下, 浏览器几乎会遵循重定向并重试请求 透明地)。

因此,我建议返回 404 状态:

  • http://yoursite/ and https://yoursite/实际上是两个不同的站点。没有理由期望所有内容都是 1:1 映射 URI 空间中的资源从一个空间到另一个空间(就在同一个空间中) 方式,因为你可以有一个完全不同的层次结构ftp://yoursite/).
  • 更重要的是,这是一个应该在上游处理的问题:引导用户使用此资源的链接http://应视为已损坏。不要让它自动工作。 不应该存在的资源出现 404 状态是没有问题的。在 另外,当出现错误时返回错误消息是好的: 它会迫使你(或者至少提醒你)作为开发人员,你 需要修复导致此问题的页面/表单/链接。

EDIT:(例子)

假设你有http://example.com/,网站的非安全部分,允许用户浏览项目。他们在该阶段尚未登录,因此可以通过纯 HTTP 进行登录。

现在,是购物车/付款时间。您需要 HTTPS。您将用户发送至https://example.com/cart/。如果将用户发送到购物车部分的链接之一使用纯 HTTP(即http://example.com/cart/),这是一个开发错误。它不应该在那里。当您认为自己将被发送到时,使流程中断https://example.com/cart/允许开发人员看到它(并且一旦修复,用户就永远不会遇到问题)。

如果它只是指向您网站的 HTTPS 部分(通常是通过某处链接进行 HTTP GET),则风险不一定那么大。

自动重定向变得更加危险的是当它们隐藏了更大的问题时。

例如,您正在https://example.com/cart/creditcarddetails并且您已经填写了一些实际上应该仅通过 SSL 保留的信息。然而,开发商犯了一个错误,并明确表示http://链接在表单中使用。此外,开发人员(毕竟是用户/人类)在 Firefox 中点击了“不要再显示此消息”,当它显示“警告:您将从安全页面转到非安全页面”时(顺便说一句,不幸的是,Firefox 会发出事后警告:当它向用户显示该消息时,它已经发出了不安全的请求)。现在,带有敏感数据的 GET/POST 请求首先发送到不正确的纯文本http://链接和自动重写告诉浏览器再次尝试请求https://。它看起来很好,因为就用户而言,这一切都发生在不到一秒的时间内。然而,事实并非如此:敏感数据是明文发送的。

使仅应通过 HTTPS 传输的纯 HTTP 部分不做任何有用的事情实际上可以帮助您更清楚地看到问题所在。由于如果链接正确实现,用户无论如何都不会到达那里,所以这对他们来说并不是真正的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对特定 URL 强制使用 HTTPS 的相关文章

随机推荐

  • 为什么调用 FnOnce 闭包是一个举动?

    我试图将一个闭包传递给一个函数 然后该函数将在函数范围内改变传递给它的某些内容 根据我目前对 Rust 的理解 应该是这样的 pub fn call something callback FnOnce mut Vec
  • 调试器无法看到 Lambda 中的局部变量

    我注意到 当我将鼠标悬停在局部变量上时 当我的调试器停止在 lambda 内时 它会报告Cannot find local variable variable name 即使它在 lambda 内部可见并且已被使用 示例代码 public
  • python argparse 设置未提供参数时的行为

    我对 python 相当陌生 并且在使用命令行参数时一直困扰着如何构建我的简单脚本 该脚本的目的是自动执行我工作中与排序和操作图像相关的一些日常任务 我可以指定参数并让它们调用相关函数 但我也想在未提供参数时设置默认操作 这是我当前的结构
  • 如何以角度模拟模块

    所以我读了很多帖子 但到目前为止还没有有效的建议 我想模拟一个模块 比如说 angular foo 原始文件与其他所有文件一起加载 angular module app angular foo 我想在我的业力 摩卡测试中模拟这个模块 我已经
  • R:在深度嵌套列表中按名称查找对象

    Problem 我认为这应该是一个常见问题 但我找不到解决方案 让我们假设一个深度嵌套的列表 例如 my list lt list first node list group a list E001 1 5 E002 list F001 6
  • 将 JSON.NET JObject 转换为 JsonResult 时出现异常

    我有一个 JSON NET JObject 其数据结构如下 foo bar baz 我试图将其转换为 ASP NET MVC JsonResult 如下所示 JObject someData JsonResult jsonResult Js
  • 快速测试目录是否为空

    测试目录是否为空的最快方法是什么 当然我可以检查的长度 list files path all files TRUE include dirs TRUE no TRUE 但这需要枚举我宁愿避免的目录的全部内容 EDIT 我正在寻找便携式解决
  • Composer 不生成库的自动加载

    我已经设置了两个项目 一个 init 和一个库 这是 init 所需的 它们都设置了 PSR 0 自动加载 但库中的自动加载值不会添加到 init 项目中的vendor composer autoload namespaces php 中
  • 为什么 Math.max(double a, double b) 不是可变参数?

    为什么 Math max 的实现不是可变参数函数 它可以像这样实现 public class Main public static double max double values double max Double NEGATIVE IN
  • 逐像素颜色转换 WriteableBitmap => 仅 PNG 黑色到透明颜色

    我正在开发一个 silverlight 应用程序 其中所有图标都是 PNG 的颜色all这些图标是黑色的 或者更确切地说是黑色到灰色的 具体取决于 Alpha 值 每个 PNG 都有透明背景 在我的应用程序中 我想要逐个像素地进行颜色更改
  • 如何知道

    如果滚动结束已到达 div 标签 我需要触发一个函数 page bind scroll function e page is the ID of the div im scrolling if document body scrollHei
  • 左侧带有箭头的微调器

    我正在开发一个 RTL 语言的应用程序 想要更改 Spinner 左侧箭头的位置 有没有办法在不创建自定义微调器的情况下执行此操作 您必须编写一个自定义微调器 示例代码如下 您可以根据需要进行编辑
  • 在 Swift 中获取两个日期(月/日/小时/分钟/秒)之间的差异

    我试图将当前日期之间的差异作为NSDate 和来自 PHP 的日期time 调用例如 NSDate timeIntervalSinceReferenceDate 1417147270 我如何获取两个日期之间的时间差 我想要一个比较两个日期的
  • 找到正值的零交叉和负值的零交叉

    我有一个信号 我想在以下情况下复制 1 从过零开始变为正值 2 复制一定数量的点 例如8000 3 复制完 8000 个点后 继续追加点 直到找到向下的过零部分 我可以找到零交叉点 但我在知道如何判断零交叉点何时变为正值和 或零交叉点变为负
  • 无法再打开 Spyder IDE 进行 Python 编程

    几个月前 我在我的 Windows 7 笔记本电脑上安装了 Python 3 4 作为 Anaconda 的一部分 https www continuum io downloads 我的安装包括 Spyder IDE 并且我已成功使用 Sp
  • ES6 中是否有对 ES5 `module.exports = require('./inner.js')` 的一行类比?

    before module exports require inner js nowadays export default from inner js 我正在尝试这样做 但是 babel 只允许在 es7 stage 1 中这样做目前的建
  • 自定义属性 - 是还是不是?

    最近 我阅读了越来越多关于人们在 HTML 标签中使用自定义属性的文章 主要是为了嵌入一些额外的数据以在 javascript 代码中使用 我希望收集一些反馈 了解使用自定义属性是否是一个好的做法 以及一些替代方案 看起来确实可以简化bot
  • MSBuild IIS 问题

    我正在使用 MSBuild 打包和发布我的 Asp Net MVC 3 Net 4 应用程序 我已经为 MVC 1 0 Net 3 5 应用程序成功完成了此操作 每当我包含 IIS 设置 IncludeIisSettings true 在我
  • ASP.NET MVC 视图模型最佳实践

    我的 ASP NET MVC 站点连接到 WCF 服务以获取数据 WCF 服务返回如下数据协定 DataContract public class Person DataMember public string First get set
  • 对特定 URL 强制使用 HTTPS

    这应该很快 这是我当前的 htaccess 文件 BEGIN WordPress