gpt4 book ai didi

c# - URL 中的 ServiceStack session ID

转载 作者:行者123 更新时间:2023-12-04 08:15:23 25 4
gpt4 key购买 nike

美好的一天,我对这个话题不太熟悉,所以如果没有以最好的方式解释,请原谅。
我使用 ServiceStack 作为我的后端 API 并启用了“AllowSessionIdsInHttpParams = true”。我正在通过我的网址传递 ss-id。我注意到我可以复制该 ss-id 并在不同的客户端(浏览器)中使用。
ss-id 是否应该不针对用户代理/客户端进行验证,而仅在客户端相同时进行验证?
后端代码

            //Configure Host
SetConfig(new HostConfig
{
DebugMode = false,
AllowSessionIdsInHttpParams = false,
UseSecureCookies = true,
UseSameSiteCookies = true,
AllowNonHttpOnlyCookies = true
});

// Plugins
Plugins.Add(new CorsFeature(AppConfig.allowedOrigins, "GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD", "Content-Type, Authorization, Accept, X-ss-id", true));
前端
     var instance = axios.create({
baseURL: Vue.prototype.$AppConfig.URL_API,
withCredentials: true,
})
设置
后端和前端都是 HTTPS。
设置 allowedOrigins 而不是通配符(*),如果我使用它会产生不同的问题。
错误:
401 -

最佳答案

Should the ss-id not be validated against the user agent / client


不,cookie 用于识别 session ,因为它具有高熵的唯一 id,是 HTTP 客户端发送的最不可预测的标识符。它与其他不记名 token (例如 JWT token 或 API key )没有太大区别,它们按原样对不记名进行身份验证,即无需额外的用户代理验证。
针对用户代理进行验证只是一种常见的、高度可预测和可欺骗的安全剧场,即如果他们能够从 HTTP header 访问您的 Cookie,他们也可以访问所有其他 HTTP header 。
您可以根据 IP 地址对其进行验证,但这会在网络更改时中断 session ,例如每当设备漫游 Wifi 点时,这就是通常不这样做的原因。
为了最好地保护您的 cookie,它们应该仅通过 SSL 作为 Secure and HTTP Only 发送。 Cookie(即 ServiceStack 中的默认值):
SetConfig(new HostConfig {
UseSecureCookies = true,
UseHttpOnlyCookies = true,
});
要获得针对 CSRF 的额外保护,您可以启用 SameSite Cookies :
SetConfig(new HostConfig {
UseSameSiteCookies = true,
});
尽管这可能会破坏跨站点功能和第三方 OAuth 提供商(如 Twitter OAuth),但它设置为 Lax默认情况下。

关于c# - URL 中的 ServiceStack session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65731481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com