我是一名初级 PHP 程序员,想继续学习引起我注意的一切,我会分析它直到我理解它。我最近在网上遇到了大约 2 个页面,一个商店和一个像 PayPal 这样的付款处理页面,当我第一次访问该网页时,我看到了一些奇怪的东西(这是我第一次指的是没有 cookie、缓存的未煮过的模式) ...),该页面会自动使我进行以下重定向:
https://example.com/ -> https://example.com/?secure=1
Run Code Online (Sandbox Code Playgroud)
一旦它重定向我(当它第一次访问时)它会创建一个值为 md5 的 cookie,最有趣的是,除非我的 IP 地址发生变化,否则该值不会改变,两个网页做同样的事情. 此外,如果我手动从搜索引擎中删除 cookie,它会再次重定向我,就好像它是第一次输入一样。
我已经尝试谷歌搜索了好几天,但无法理解这一点。有人可以告诉我它可以是什么,我可以将哪些类型的安全性集成到带有 cookie 和重定向的网站中?另外,假设有时 URL 更改为:
/?secure=2
Run Code Online (Sandbox Code Playgroud)
它可能是一些框架功能,如 symfony 或 laravel?
从您的描述来看,您对安全性和 Web 的内部运作都不熟悉,因此我将尝试尽可能对初学者友好地解释这两个概念。
首先,安全性不是您可以增加的单一事物。安全只能作为对特定威胁的反对而存在。将其与汽车进行比较:您不能简单地“使汽车更安全”,但可以使汽车更安全地抵御特定类型的威胁,例如正面碰撞、侧面碰撞等。
由于立法者最近推动网站通知用户他们的网站使用 cookie,大多数网络用户都知道它们的存在,但尚不清楚它们是什么以及它们做什么。
简而言之,每个 cookie 至少有两个东西:名称和值。网站可以指示浏览器设置 cookie,浏览器将保存该 cookie。然后,在浏览器向该站点发出进一步请求时,浏览器会将所有 cookie 发送到服务器。它看起来像这样:
浏览器:你好,StackExchange。我想访问“security.stackexchange.com”
服务器:你好浏览器。这是“security.stackexchange.com”浏览器:你好,StackExchange。我现在想登录。我的名字是 MechMK1,我的密码是“f0CGlLJZ”
服务器:你好浏览器。您现在已登录。请将cookie“会话”设置为“1234 5678 ABCD”值浏览器:你好,StackExchange。我想现在将我的显示语言更改为德语。我的“会话”cookie 也是“1234 5678 ABCD”
服务器:你好浏览器。我知道你是 MechMK1。您的显示语言现在是德语。请将cookie“lang”设置为“DE”浏览器:你好,StackExchange。我想问一个新问题。另外我的“会话”cookie 是“1234 5678 ABCD”,我的“lang”cookie 是“DE”
服务器:你好浏览器。我知道您是 MechMK1,您的首选显示语言是德语。这是德语的新问题页面。
为什么这是必要的?服务器不能“记住”我是谁吗?事实证明,没有。Web 是基于 HTTP 的,而 HTTP 是所谓的“无状态”协议。它不记得任何东西,并且每个请求都被 Web 服务器视为您第一次请求任何东西。添加了 Cookie,以便浏览器可以反复向服务器提供它们需要的所有信息。
Cookies 通常是攻击者的目标。正如您在上面的示例中看到的,cookie 可用于告诉网站您是谁,因此可以窃取此 cookie 的攻击者将能够冒充您。如果攻击者拥有您的会话 cookie,那么 Web 服务器实际上无法区分攻击者和您。
因此,已经创建了许多机制来使 cookie 更安全,例如 cookie 中的 HTTPOnly 标志或 Secure-flag。我不会详细解释这些,因为这不是问题的真正范围,但是您可以阅读它们的作用。
Cookie 还可用于防止特定类型的攻击。我知道,我之前说过 cookie 不是一种安全措施,而我之前的声明似乎与此相矛盾。我的意思是“一般来说,Cookie 不是一种安全措施。但是,您可以使用 Cookie 来防止特定类型的攻击”。具体来说,Cross-Site Request Forgery攻击可以通过所谓的“Double Submit Cookie Pattern”来缓解,这需要另一个答案作为整体来解释。
在您的问题中,您提到了 PayPal 表现出的一种特定行为。问题是,我无法告诉您 PayPal 对他们的 cookie 做了什么。从本质上讲,你把你的饼干到PayPal,然后他们的应用服务器决定任何基于这些cookie。可能是,如果您发送了一个名为“giveMeAllTheMoney”且值为“prettyPlease”的 cookie,那么 PayPal 上的所有资金都将转移给您——不太可能,但除了 PayPal 之外,没有人能够判断是否是这种情况。
我能说的是,没有像设置?secure=2为查询参数或其他一些 cookie 那样的黄金子弹,可以神奇地使您的网站免受所有攻击。
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |