gpt4 book ai didi

angularjs - 使用 X-XSRF-TOKEN(如 angularjs) header 确保 CSRF 保护

转载 作者:行者123 更新时间:2023-12-01 02:08:09 25 4
gpt4 key购买 nike

我正在尝试使用可靠的 Spring 安全身份验证编写 Web 集成测试。该应用程序使用 AngularJS 和 Spring Boot。
由于我使用 AngularJS,CSRF 保护是通过 X-XSRF-TOKEN header 和 XSRF-TOKEN cookie 完成的(据我所知,它是 angular 的默认值)。

如何配置 restassured 以生成并使用表单例份验证发送此 token ?现在我有这样的事情:

given().auth().form("user", "password", new FormAuthConfig("login", "username", "password").sendCsrfTokenAsHeader()).when().get("/index.html").then().log().all().statusCode(200);

但是在日志中,我看到 CSRF token 在将凭据发布到/login 时无效。

最佳答案

你需要做 2 GET在发布之前在您的休息客户端和测试类中使用 spring 安全 CSRF 保护。

  • 做个 GET请求登录。这将返回 JSESSIONID token 和 XSRF-TOKEN token 。如果您使用返回的 XSRF-TOKENPOST它会失败,因为我们使用 empty/false JSESSIONID 得到它.
  • 获取有用的 XSRF-TOKEN来自第二个 GET , 使用 JSESSIONID来自之前的请求。
  • 现在您可以使用 XSRF-TOKEN为您 POST .

  • 示例如何通过 X-XSRF-TOKEN 使用 CSRF 保护放心:
    //1) get sessionId
    Response response =
    given().auth().preemptive().basic(userName, userPassword).contentType(JSON).
    when().get(PREFIX_URL + "/users/user").
    then().log().all().extract().response();
    String jsessionidId = response.getSessionId();//or response.cookie("JSESSIONID");

    //2) get XSRF-TOKEN using new/real sessionId
    response =
    given().
    sessionId(jsessionidId).//or cookie("JSESSIONID", jsessionidId).
    contentType(JSON).
    when().get(PREFIX_URL + "/users/user").
    then().log().all().extract().response();

    //3) post data using XSRF-TOKEN
    given().log().all().
    sessionId(jsessionidId).//or cookie("JSESSIONID", jsessionidId).
    header("X-XSRF-TOKEN", response.cookie("XSRF-TOKEN")).
    queryParam("pos",pos.getId()).
    queryParam("date",date).
    queryParam("group_id",itemGroup.getId()).
    body(orderItems).
    contentType(JSON).
    when().
    post(PREFIX_URL + "/orders/orderitems").
    then().
    log().all().assertThat().statusCode(200);

    关于angularjs - 使用 X-XSRF-TOKEN(如 angularjs) header 确保 CSRF 保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31071988/

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