30/09/2018, 17:21
Làm sao để lấy được CSRF TOKEN của DNH
Em đang định thêm chức năng login/comment/… cho cái diễn đànconsole nhưng vướng ngay đoạn đăng nhập:
Đây là POST, GET của diễn đàn khi log in:
Em không biết làm sao để có được con số khoanh xanh lá cây đó
Mà qua được cái đó mới lấy được cái CSRF TOKEN
Bài liên quan
Làm tốt nhé
Wow, csrf bung ra ầm ầm nhưng mà không dùng được ạ hình như csrf nó phải dựa vào thông tin của user (hoặc ít nhất là có liên quan đến con số dạng 1434510080908 kia)
Vì lúc em thử login tài khoản vào firefox xong lấy cái token lấy từ trong network monitor cho vào python thì login được , xong khi em logout ở firefox ra thì cái token đó mất tác dụng trên python luôn
Em xem source html của trang chủ thì thấy cái này có vẻ liên quan (đều là 1434):
Mình dùng 2 requests -> lấy token -> post login thấy bình thường. Bạn thử lại như mình thử xem:
Bước 1 lấy CRFS TOKEN: 1434510080908 -> timestamp dạng milliseconds nhé.
Bước 2 Login
Lưu ý là bước 2 là submit form bình thường, nên phải bỏ content type là json đi nhé.
P/S: Hy vọng không ai dùng cách này để phá hoại forum
Thế là số này
1434510080908
lấy từ giờ của máy client đổi ra milisecond hay là giờ của máy chủ ạ em gà web lắm :@thangngoc89 hình như mình cần một cái API Key để login đúng không?
Em đọc bên discourse thấy hình như muốn dùng api thì phải “kinh động” đến admin để tạo api_key nên em mới phải làm kiểu này, nếu dùng được api thì có sẵn thư viện pydiscourse luôn
discourse có cho phép admin tạo API Key đó anh. Nếu anh cung cấp thì bạn ấy thoải mái hơn. nhưng cũng hơi nguy hiểm. Nếu discourse cho phép sử dụng chuẩn OAuth để mọi người viết app thì hay quá.
Alô alô chim sẻ gọi đại bàng, giúp em nốt đoạn timestamp phát em không biết lấy số đấy ở đâu
Mình không chắc, nhưng mình test trên diễn đàn thì đổi timestamp ra thì khớp với thời gian trên máy mình, phút,giây luôn.
Nên bạn cứ thử giờ của client luôn xem. Chú ý request header cho đúng thôi. Thành công thì giữ cookie lại.
API Key chỉ sử dụng các thao tác như tạo, xóa, close, thay đổi topics, categories, users và truy cập thông tin Users, cũng như thông báo thiết lập hệ thống. Nó chưa cho phép OAuth. Shared API key rất nguy hiểm dễ dàng thay đổi hệ thống và quản trị.
P/s: @ltd em đang xây dựng mô hình chát chém gió cho diễn đàn mà ko cần đăng ký mới, lấy thông tin thành viên từ diễn đàn Forum thôi
2 anh có bài tut/video/ebook… nào hay nói về vụ dùng get/post để đăng nhập, csrf với timestamp không, cho em xin để nghiên cứu với, tình hình là cứ làm mò mẫm thế này không ổn (tiếng việt thì càng tốt, không cần quá sâu, chỉ cần cơ bản thôi)
Anh cũng đang nghiên cứu cái này
Cái số bác hỏi, get json nó tự sinh ra hay sao ấy, em dùng hay gặp nó mà cũng chả biết ở đâu ra
Em tạo được cái số đấy rồi nhưng đưa vào python thì chưa được, còn chạy bằng add-on firefox httprequester thì ok rồi
Em thấy là toàn bộ quá trình get/post đều không thấy server response cái số đó => số đó được tạo ra trên client => số đó chính là timestamp miliseconds của client => có thể lấy giờ của client để tạo ra số đó
1 là cần API key
2 là cần csrf token
Gửi request cho Discourse team đi bạn
Em đang định đi theo hướng này, nhưng mà không rõ là với điều kiện nào thì csrf token được chấp nhận, em toàn bị BAD CSRF
bạn dùng python sao không thì hỏi bác @ltd về cách gửi request trong python
Em đang mò lúc nữa không được chắc phải đăng bài hỏi anh em thôi
Em dùng cái thư viện requests của python để làm, nhưng do em không hiểu về nguyên lý get/post với mấy cái liên quan như session, cookies, … nên là khả năng gửi request thiếu thành phần gì đó đang nghi ngờ chỗ cookies hoặc session, từ đầu đến giờ em chưa động đến nó. (hình như diễn đàn dựa vào session_id/cookies và timestamp để tạo token)
Ầu yeah!!!, lần đầu tiên đăng nhập thành công trên python, muốn khóc quá
Đúng như dự đoán, “thủ phạm” là thằng cookies , bổ sung thêm vào câu trả lời của bác @mrphu3074
Bước 1: lấy CRFS TOKEN: 1434510080908 -> timestamp dạng milliseconds nhé. (lấy từ time của client)
Bước 2: Login
Vì nguyên tắc khi làm login kiểu thủ công này là phải giữ lại cookie để gửi request.
mình có comment đấy thôi.
Chúc mừng thành công rồi nhá. Tự mò ra lúc nào cũng thấy hưng phấn hơn