问题标签 [cookie-httponly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - 不安全的 HTTP cookie
早上好人。
我有与 HTTP Cookies 相关的问题,有一种方法或工具可以让我们知道我们的 Cookies 有安全标志,HttpOnly?
谢谢
php - 重定向时重置 Cookie
我的应用程序有多个域,并且具有让用户切换到其他本地站点的功能。
当用户切换区域设置时,他将在域之间被重定向(对于每个域,应用程序将使用相同的区域设置设置 cookie)。
在重定向循环结束时,他将被重定向回“源”域(如果他将语言环境设置为具有专用域的特定国家 - 他将被重定向到专用域)。
区域设置 cookie 在重定向过程中成功设置(一个简单的 cookie - 不安全/仅限 http/严格)。
重定向过程基于 html 元标记(不是 PHP 标头,因为在这种情况下,重定向将在浏览器保存 cookie 之前发生)。
问题是:
身份验证 cookie 将从源域中删除。身份验证 cookie 是 http-only、安全和严格的(并且长期有效,因此不应过期)。
我猜这个问题与 cookie 安全设置有关,但我不知道为什么。有什么帮助吗?
c# - 如何在不使用cookie的情况下在asp.net C#中下载文件时阻止ui?
我在 web.config 中有 httponlycookie 为真 ..so 服务器端 cookie 无法在 javascript 中访问以取消阻止 ui .. 是否有任何选项可以在不使用 cookie 值的情况下阻止 ui
阻止和解除阻止 UI 代码:
asp.net-mvc - 'HttpOnly' 应该添加到 'auth' cookie
我最近对我的网站进行了安全审核,并被告知我需要将 'HttpOnly' 应用于我的 'auth' cookie。
我不知道如何在 web.config 文件中更改它。
该站点是 ASP.NET MVC。
如果有人能指出我正确的方向,我将不胜感激。
laravel - Laravel 5.6 - Passport JWT httponly cookie SPA 身份验证用于自用 API?
注意:我在这个问题上有 4 个赏金,但下面的投票答案都不是这个问题所需的答案。所需的一切都在下面的更新 3 中,只是寻找 Laravel 代码来实现。
更新 3:这个流程图正是我想要完成的流程,下面的所有内容都是一些旧更新的原始问题。此流程图总结了所需的一切。
下面流程图中的绿色部分是我知道该怎么做的部分。红色部分及其旁注是我正在寻找使用 Laravel 代码完成的帮助。
我做了很多研究,但是在将 Laravel 与 JWT httponly cookie 一起用于自用 API 时,信息总是很短且不完整(大多数在线教程仅显示 JWT 存储在本地存储中,这不是很安全)。看起来应该使用包含 Passport 的 JWT 的 httponly cookie 来识别 Javascript 端的用户,当每个请求发送到服务器以验证用户是他们所说的那个人时。
还需要一些额外的东西来全面了解如何使这个设置工作,我在一个涵盖这个的教程中没有遇到过:
- Laravel Passport(不是 tymon auth)生成加密的 JWT 并在从 JS 端登录后将其作为 httponly cookie 作为响应发送。使用什么中间件?如果刷新令牌增加了更多安全性,如何实现?
- 调用 auth 端点的 JavaScript(例如 axios)api 伪代码,如何将 httponly cookie 传递给后端,以及后端如何验证令牌是否有效。
- 如果从多个设备登录单个帐户,则设备被盗,如何撤消所有经过身份验证的用户设备的访问权限(假设用户从他们控制的已登录设备更改密码)?
- 登录/注册、注销、更改密码、忘记密码控制器方法通常会如何处理令牌的创建/验证/撤销?
- CSRF 令牌集成。
我希望这个问题的答案可以作为一个易于理解的指南,供未来的读者和那些目前正在努力寻找涵盖上述自用 API 的答案的人使用。
更新 1:
- 请注意我之前尝试
CreateFreshApiToken
过,但是在撤销用户的令牌时不起作用(对于上面的第 3 点和第 4 点)。这是基于核心 laravel 开发人员在谈论中间件时的评论:CreateFreshApiToken
此中间件创建的 JWT 令牌不会存储在任何地方。它们不能被撤销或“不存在”。它们只是为您的 api 调用提供了一种通过 laravel_token cookie 进行身份验证的方法。它与访问令牌无关。另外:您通常不会在发布它们的同一应用程序上使用客户端发布的令牌。您可以在第一方或第三方应用程序中使用它们。要么使用中间件,要么使用客户端发出的令牌,但不能同时使用两者。
所以它似乎能够满足第 3 点和第 4 点来撤销令牌,如果使用CreateFreshApiToken
中间件则不可能这样做。
- 在客户端,处理安全的 httpOnly cookie 似乎
Authorization: Bearer <token>
不是要走的路。我认为请求/响应应该包含安全的 httpOnly cookie 作为请求/响应标头,就像这样基于 laravel 文档:
当使用这种身份验证方法时,默认的 Laravel JavaScript 脚手架会指示 Axios 始终发送 X-CSRF-TOKEN 和 X-Requested-With 标头。
这也是我正在寻找涵盖上述所有要点的解决方案的原因。抱歉,我使用的是 Laravel 5.6 而不是 5.5。
更新 2:
看来密码授予/刷新令牌授予组合是要走的路。寻找使用密码授予/刷新令牌授予组合的易于遵循的实施指南。
密码授权: 此授权适用于与我们信任的客户打交道,例如我们自己网站的移动应用程序。在这种情况下,客户端将用户的登录凭据发送到授权服务器,服务器直接颁发访问令牌。
Refresh Token Grant: 当服务器发出访问令牌时,它也会设置访问令牌的到期时间。当我们想要在访问令牌过期后刷新访问令牌时,使用刷新令牌授权。在这种情况下,授权服务器会在发布访问令牌时发送一个刷新令牌,该令牌可用于请求新的访问令牌。
我正在寻找一个易于实施、直接、全面的答案,使用密码授予/刷新令牌授予组合,该组合涵盖上述原始 5 点的所有部分,使用 httpOnly 安全 cookie、创建/撤销/刷新令牌、登录 cookie 创建,注销 cookie 撤销、控制器方法、CSRF 等。
asp.net - HttpOnly cookie 在 aspx 上的行为
我使用文章做了一个 HttpOnly cookie:
https://docs.microsoft.com/pt-br/dotnet/api/system.web.httpcookie.httponly?view=netframework-4.7.2
HttpOnly cookie的创建如下:
好的,我看到这篇文章说: https ://latesthackingnews.com/2017/07/03/what-is-httponly-cookie/
HttpOnly 告诉浏览器保存 cookie 而不将其显示给客户端脚本。另一方面,安全标志会强制浏览器通过 HTTPS 等加密通道发送 cookie,从而停止窃听,尤其是当 HTTPS 连接通过 SSLStrip 等工具降级为 HTTP 时。
好的,
但我在我的 .aspx 网页中做了一个仅 http 的 cookie,但我可以通过 Chrome 的 cookie 文件看到它:
我设置了标志:
问题 1-如果 HttpOnly 告诉浏览器保存 cookie 而不将其显示给客户端脚本,为什么我可以访问 Chrome 的 cookie 文件中的 cookie 名称?
问题 1.1-它的内容是否可以访问,但不使用脚本?
问题 2-这很愚蠢,但我无法使用以下代码通过 aspx 访问 HttpOnly cookie:
它是通过服务器端访问它的唯一方法吗?
问题 3 -当我输入时,myHttpOnlyCookie.Secure = true;
我无法通过非 HTTPS 连接访问它 - 对吗?只使用https我可以访问它吗?
问题 4-如果我使用myHttpOnlyCookie.Secure = true
,则有加密和解密。
这在处理能力方面的成本是多少?
javascript - 使用 ajax 从 javascript 访问安全和 httponly cookie 的问题
我的网站对 cookie 没有安全性,一些 cookie 是由 javascript 设置的。出于安全原因,我不得不添加安全和 httponly 标志,以适应我的 javascript。我发现的唯一方法是使用 ajax。
我写了一个由 javascript thru ajax 调用的 php 脚本来设置 cookie。据我所知,javascript 是单任务,异步任务安排在同步任务之后。所以我不得不修改我的代码以等待 ajax 返回,然后再调用下一页。例如(参见下面的 javascript),当 action 为“RELOAD”时,如果在页面上找到表单标签,则提交,如果没有,则完成简单的重新加载。
javascript:
php 脚本 setMultiCookies.php :
将 cookie var1 设置为 val1 并将 var2 设置为 val2、取消设置 val3 并在此之后重新加载页面的调用示例:
它大部分时间都有效,但在某些情况下,尤其是表单标签,它不起作用。我不知道会发生什么。我确定 php 脚本有效。我进行了一些跟踪显示,并且测试了 php setcookie return 设置为 true。但是没有设置cookies。我想在设置完成之前会发生一些事情。我之前在 javascript 同步部分加载页面时遇到了这个问题。
如果您知道会发生什么或者您知道某种调查方法,我会很高兴。
javascript - 如何从 UWP WebView 中提取 httponly cookie?
我知道有一些技术可以通过 HttpBaseProtocolFilter.CookieManager 检索 WebView cookie,它至少在相同应用程序的边界内在 WebView 和 HttpClient 之间共享。但是,它不能访问 httponly cookie。httponly cookie 也不在 WebView 和 HttpClient 之间共享。坦率地说,我理解这些限制,但在我放弃之前,我想问一下是否有人解决了这个问题?
这就是我需要的。我们有一个用 Java 编写的网站。该站点生成 JSESSION httponly cookie 并将其传递给客户端。我们正在开发一个 UWP 应用程序,我们在其中实例化扮演客户端角色的 WebView。然后,我们注入 javascript 在 UWP 代码和显示的页面之间进行通信。一切都按预期完美运行。现在我们需要在当前会话的上下文中从 UWP 代码中执行一些请求。为此,我们需要在 UWP 中为 HttpClient 使用相同的 JSESSION,但我找不到这样做的方法。
每次我从 UWP 发送请求时,都会生成一个新的 JSESSION,这会阻止逻辑正常工作。那么,有什么方法可以从 WebView 中检索该 httponly cookie,或者用分配给 HttpClient 的那个来覆盖它?
angular - 如何从子 Angular 7 应用程序访问父应用程序 HttpOnly Cookie
-- 托管在 ( http://host )上的父 c# 应用程序
--Child Angular 7 App 托管在 ( http://host/child )
我需要检查父应用程序中的 cookie。我使用了“ngx-cookie-service”,它不返回 HttpOnly cookie。无论如何可以访问cookie吗?