Điểm:0

Trình tự các hành động khi xác thực cookie đến trang web Drupal

lá cờ jp

Có một trang web drupal 9 có điểm cuối REST có thể được truy cập đối với người dùng đã đăng nhập (không dành cho người ẩn danh).

Và, cần thực hiện yêu cầu GET tới điểm cuối bằng cách sử dụng xác thực cookie.

Bạn có thể làm rõ, thuật toán chính xác của yêu cầu này là gì không?

Tôi đã cố gắng làm điều đó theo hai cách.

Cách #1.

Gửi yêu cầu POST cho người dùng/đăng nhập bằng thông tin đăng nhập và nhận mã thông báo CSRF, sau đó sử dụng mã thông báo trong tiêu đề của yêu cầu GET cho điểm cuối của tôi. Không kết quả.

Cách #2.

Gửi yêu cầu POST cho người dùng/đăng nhập bằng thông tin đăng nhập, sau đó gửi yêu cầu GET tới phiên/mã thông báo và nhận mã thông báo từ đó. Sau đó, sử dụng mã thông báo này từ phiên/mã thông báo trong yêu cầu GET của tôi.

Ngoài ra, không có kết quả.

Trong cả hai trường hợp, nó trả về lỗi 401 (từ Mất ngủ) hoặc lỗi 403 (từ JavaScript bên ngoài).

Tiêu đề của tôi để NHẬN yêu cầu là

  tiêu đề: {
    'Loại nội dung': 'application/json',
    'X-CSRF-Token': mã thông báo
  }

Xác thực cookie được kiểm tra cho điểm cuối REST của tôi trong REST UI.

Tôi đang làm gì sai?

Kevin avatar
lá cờ in
Nếu bạn đang kiểm tra cookie, bạn có chuyển lại chúng trong mỗi yêu cầu không? Tuyến đường có được bật cho xác thực cookie không? https://www.drupal.org/docs/8/core/modules/rest/3-post-for-creating-content-entities
Yakimkin Roman avatar
lá cờ jp
Có, tuyến đường được bật cho xác thực cookie. Đây là mô tả của nó: phương pháp: NHẬN định dạng: json xác thực: basic_auth, cookie Về việc chuyển lại cookie - không, tôi đang chuyển mã thông báo. tìm nạp trả lại (calcUrl, { phương pháp: 'NHẬN', tiêu đề: { 'Loại nội dung': 'application/json', 'X-CSRF-Token': mã thông báo } }) })
lá cờ cn
Hãy thử chuyển lại cookie
Điểm:1
lá cờ in

Khi điểm cuối của bạn yêu cầu xác thực cookie, bạn nên chuyển cookie bạn nhận được từ bài đăng đăng nhập của mình với các yêu cầu GET sau đây.

CSRF không liên quan gì đến auth, nó chỉ là một biện pháp phòng thủ tấn công CSRF.

Điểm:1
lá cờ ph

Bạn cần tham khảo cookie được lưu trữ. Đây là một ví dụ sử dụng curl:

curl --header "Content-type: application/json" --request POST -s -c cookie.txt --data-binary '{ "name": "username", "pass": "password" }' https: //example.com/user/login

Từ đó, bạn sẽ nhận được cookie của mình trong cookie.txt và mã thông báo của bạn trong phản hồi json.

Sau đó, bạn có thể thực hiện yêu cầu nhận như thế này (nhận yêu cầu không cần mã thông báo CSRF):

curl -s -X GET -b cookie.txt --header 'Content-type: application/json' ...

và một yêu cầu bài viết như thế này:

curl -s -X POST -b cookie.txt --header 'Content-type: application/json' --header "X-CSRF-Token: $token"

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.