所以我有一个java webapp,它使用带有apache代理层的tomcat.我希望从应用程序设置的所有cookie都有httpOnly标志.这样做的问题是tomcat负责从应用程序端设置标志,并且它的默认值(在servlet api 2.5中)为false.我希望我可以使用apache动态设置所有cookie的这个标志.
我一直在尝试不同的组合,而我最接近的是设置传递给httpOnly的最后一个cookie,这当然是错误的:
Header append Set-Cookie "; HttpOnly"
Run Code Online (Sandbox Code Playgroud)
我无法知道将从应用程序传递哪些cookie /值.这甚至可能吗?
我正试图关闭httponly以用于phonegap.我正在使用rails 3.1和devise,每个都报告了(但没有记录)这样做的方法,其中没有一个工作:
# application.rb
config.session_options = { :httponly => false } # no effect
config.session = { :httponly => false } # undefined method `session='
# devise.rb
config.cookie_options = { :httponly => false } # also no effect
Run Code Online (Sandbox Code Playgroud)
测试我重新启动服务器,删除现有的cookie,并重新加载页面.仍然在chrome调试器中检查了"Http"列.
救命!
我正在使用Ruby和Sinatra开发一个应用程序.
我用
enable :sessions
Run Code Online (Sandbox Code Playgroud)
为了使用rack提供的会话变量.如何使所有会话cookie成为HTTPOnly?这是默认的吗?我找不到任何关于此的文件.
我有一个在经过表单身份验证的aspx页面内运行的Java applet.在我的站点的.NET 1.1版本中,applet可以访问会话cookie并且能够从服务器检索文件,但是在.NET 2.0版本中它无法进行身份验证.
我在其他地方看过几个论坛帖子,声明2.0默认情况下会将Hets设置为HttpOnly,但到目前为止给出的解决方案对我来说并不适用.我还在某处读到2.0可能基于用户代理进行区分.
有没有人对此有任何经验或见解?
我已经对HttpOnly cookie和存在的问题进行了一些研究,可以将XHR请求与TRACE方法结合使用,以获得从服务器回送的cookie值.
对于安全的Web应用程序,我目前有以下设置:
为了避免跨站点请求伪造,我在表单的隐藏字段中添加了一个随机键.必须在每个POST请求中返回此密钥才能接受请求.
除此之外,所有HTML都默认使用白名单进行转义,以选择允许的标签和属性,但要说明为什么这还不够:我们之前允许使用span上的style-attribute(例如为文本着色),可以用以下方式在Internet Explorer中传递javascript:
<span style="width: expression(alert('Example'));"> </span>
Run Code Online (Sandbox Code Playgroud)
然后是最后一个问题:有人能指出这个设置中可能存在缺陷的任何缺陷或建议吗?或者您使用相同或完全不同的方法?
已知问题:
我有一个带有登录端点的 REST API。登录端点接受用户名和密码,服务器通过发送包含一些有效负载(如 JWT)的 HTTPOnly Cookie 进行响应。
我一直使用的方法已经工作了几年,直到上周Set-Cookie
标题停止工作。在 REST API 失去功能之前,我没有接触过它的源代码,因为我当时正在开发基于 Svelte 的前端。
我怀疑这与本地主机中Secure
设置的属性有关。false
然而,根据使用HTTP cookies,只要是本地主机,不安全的连接就应该没问题。我以这种方式开发 REST API 一段时间了,很惊讶地发现 cookie 不再被设置。
使用 Postman 测试 API 会产生设置 cookie 的预期结果。
我尝试重新创建真实 API 的一般流程,并将其精简为核心要素。
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
"github.com/golang-jwt/jwt/v4"
)
const idleTimeout = 5 * time.Second
func main() {
app := fiber.New(fiber.Config{
IdleTimeout: idleTimeout,
})
app.Use(cors.New(cors.Config{
AllowOrigins: "*",
AllowHeaders: "Origin, Content-Type, Accept, …
Run Code Online (Sandbox Code Playgroud) 我有一个 NestJs 应用程序,它使用 HttpOnly cookie 进行身份验证。在开发过程中一切都很完美。我的 NextJs 客户端 (http://localhost:4200) 使用 Graphql 向我的 NestJs 服务器 (http://localhost:3333) 发送登录请求,该服务器在响应中设置 httpOnly cookie,然后客户端成功将 cookie 添加到浏览器存储。
但是,当我将这两个应用程序部署到 Render.com 时,除了最后一步之外,一切都正常。响应中已成功接收 cookie,但未将其添加到浏览器存储中。有趣的是,如果我使用已部署生产服务器的 GraphQL 游乐场来发出登录请求,则一切正常。因此,显然,问题似乎是请求来自子域。
我的生产配置:
客户端:https://swingapple-web-staging.onrender.com
服务器: https: //swingapple-api-staging.onrender.com
Cookie 设置(服务器):
sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax',
secure: process.env.NODE_ENV === 'production',
domain: process.env.NODE_ENV === 'production' ? '.onrender.com' : undefined
Run Code Online (Sandbox Code Playgroud)
Nestjs的GraphQLModule设置(服务器):
playground: true,
introspection: true,
autoSchemaFile: true,
sortSchema: true,
context: ({ req, res }) => ({ req, res }),
cors: {
credentials: true,
origin: [process.env.CLIENT_URL, 'http://localhost:4200'] …
Run Code Online (Sandbox Code Playgroud) 我知道 HttpOnly 意味着您无法使用 JS 访问它。我在想,也许你看不懂,但你可以寄回去吗?我不知道。
对于同一台服务器的新请求,我想发回那个 cookie。这可以使用 ReactJS 吗?或者也许有一些方法可以绕过它,比如用简单的 HTML 而不是 ReactDOM 打开新窗口?
谢谢你的帮助。
我的 HttpOnly cookie 有问题,我有一个自定义身份验证 API,它会在我登录时返回带有令牌的 HttpOnly cookie,但问题是,当我使用 withCredentials 在 Axios 前面发出另一个请求时,该 cookie 不会发送标题,我不明白为什么。
我使用 NextJs 作为前端,使用 Strapi 作为后端
这是创建第二个请求的代码
await axios.get(param.endpoints.getMe, {withCredentials: true})
Run Code Online (Sandbox Code Playgroud) 有人告诉我,在使用单独的前端服务时,仅使用 JWT 而不使用 HttpOnly cookie 是不安全的。
正如这里建议的:
HttpOnly Cookie:https://www.ictshore.com/ict-basics/httponly-cookie/
我目前有一个可用的 JWT 系统,因此我正在尝试升级它以支持 cookie 实现。
我首先将我的 SecurityConfiguration 更改为以下内容:
private final UserDetailsService uds;
private final PasswordEncoder bcpe;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(uds).passwordEncoder(bcpe);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable();
http.addFilter(new CustomAuthenticationFilter(authenticationManagerBean()));
http.addFilterBefore(new CustomAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().logout().deleteCookies(CustomAuthorizationFilter.COOKIE_NAME)
.and().authorizeRequests().antMatchers("/login/**", "/User/refreshToken", "/User/add").permitAll()
.and().authorizeRequests().antMatchers(GET, "/**").hasAnyAuthority("STUDENT")
.anyRequest().authenticated();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception{ // NO FUCKING IDEA WHAT THIS DOES
return super.authenticationManagerBean();
}
Run Code Online (Sandbox Code Playgroud)
从这里我尝试将实际的 cookie 实现插入到我的 …