security - 使用 Ory/Kratos 登录/注册 API 流程

标签 security authentication csrf

documentation , 有一个大而明亮的红色警告:

Never use API flows to implement Browser applications!

Using API flows in Single-Page-Apps as well as server-side apps opens up several potential attack vectors, including Login and other CSRF attacks.

文档没有详细说明这些攻击是什么。如果我通过在服务器上存储 session 数据、仅允许服务器访问此 API 以及实现我自己的 csrf 保护来正确保护我的应用程序,我安全吗?如果不是,我将面临哪些攻击,我应该采取哪些额外措施?

当然,必须有一种方法来保护我的应用程序,而无需拆除正在运行的 javascript 虚拟机,然后连续重定向 3 次以查看登录/注册页面。对于现代应用程序,我认为用户可能希望这种不连续的转换成功进行身份验证,但我认为仅查看登录/注册页面并不一定如此。

最佳答案

有两种使用 Kratos 的方法。

From a WebApp (browser)
From a Native app (iOS, Android...)

第一种方式是使用浏览器重定向并设置 csrf token 。

第二种方式不设置 csrf token ,因为不涉及浏览器。

这就是为什么有一条警告指出任何类型的“浏览器”相关应用程序都不应使用 native 应用程序流程中的方法,反之亦然!

例如,这里是您如何初始化 API 客户端( native 应用程序)的登录流程

https://www.ory.sh/kratos/docs/reference/api#initialize-login-flow-for-api-clients

这是一个如何为浏览器客户端初始化登录流程的示例

https://www.ory.sh/kratos/docs/reference/api#initialize-login-flow-for-browsers

自助服务配置用于您的浏览器重定向流程(因此浏览器客户端)。

此答案的所有功劳归功于 https://github.com/Benehiko .

关于security - 使用 Ory/Kratos 登录/注册 API 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65498956/

相关文章:

c - 使用 Openssl EVP 库加密和使用 openssl enc 终端命令解密失败

android - PKIX 路径构建失败

linux - 没有密码的ssh两台计算机同一网络

laravel - 解决 Laravel 中 token 不匹配错误的正确方法是什么?

symfony - Symfony 2 是否通过 header 接受 CSRF?

security - 使用java使用SHA256加密解密

silverlight - 安全模型 - SharePoint 2010 Silverlight web 部件调用 WCF 服务

api - POST token 停止工作 : How could we generate a token passing the grant_type as password? 超过 401 未经授权 - invalid_grant

php - FOSUserBundle 和 REST Api 调用 : How to use custom FormType?

security - 没有 SSL 的在线商店安全吗?商家帐户页面有 SSL,不过