Nhiệm vụ của BE và FE trong khi làm chức năng xác thực email

121 lượt xem

profile picture

Ẩn danh

Ngày 12 Tháng 07

Mình đang làm frontend và em đang làm một số chức năng như sau 1) Nhập email và nhấn nút Gửi 2) Nhận mã xác nhận trong mail 3) Nhập mã xác nhận và nhấn nút Xác nhận Sau khi nói chuyện với backend thì họ có bảo mình là tạo mã xác nhận trong front rồi gửi html mail form bằng api post. Còn phía backend thì sẽ nhận api rồi lưu mã xác nhận, sau đó gửi mail theo form html Nhưng mình nghĩ là phần xác thực này nọ là thuộc về quản lý data này nọ thì backend phải là người xử lý chứ. Rồi front chỉ kiểm tra lại người dùng có nhập đúng mã hay không thôi. Không biết mình nghĩ có đúng ko nữa, vì thực ra thì mình cũng mới chỉ có kinh nghiệm 1 năm frontend thôi nên có thể mình nghĩ sai cũng nên. Không biết thông thường mọi người thế nào?

Đánh giá câu hỏi ngay!

Hãy ấn Up Vote với những câu hỏi cụ thể và chi tiết

Hãy ấn Down Vote với những câu hỏi chưa rõ ràng Careerly sẽ nhắc người hỏi chỉnh sửa lại.

3 câu trả lời

BEST

Ảnh đại diện của TrungQuanDev

Đầu tiên, bạn nghĩ đúng rồi. Thứ hai, là thoải mái đi combat lại với cái ông Back-end kia nhé, ai đời việc tạo mấy thứ kiểu token quan trọng này lại kêu FE làm vậy không biết, bảo mật ở đâu =))) Quy trình chuẩn là: - Phía Front-end bạn gửi email lên cho Back-end. - Back-end nhận được địa chỉ email thì tạo Token hoặc link verify...vv tùy spec sau đó gửi mail cho người dùng luôn. - Phía người dùng sẽ click vào đường link đó từ email ra ngoài. - Lúc này bạn sẽ dựa vào url đường link đó để lấy token cũng như những thông tin cần thiết ra và tiếp tục gửi lên một api verify cho phía BE xử lý logic verify tiếp. - Chuyên sâu hơn nữa thì còn tùy từng dự án, nhưng trên đây là các bước cơ bản chuẩn nhất rồi, bạn tham khảo để combat lại với ông Back-end kia cho vui nhé =)) - Ngoài ra mình cũng có chia sẻ một góc nhìn riêng về vấn đề là FE có cần học thêm về Back-end không hoặc ngược lại, để nâng cao kiến thức của bản thân, để áp dụng cho nhiều trường hợp ví dụ như gặp phải ông Back-end nào như trên :D, bạn cũng có thể thử tham khảo thêm ở đây nhé: - https://youtu.be/8o_QhqRPwdk

Ảnh đại diện của Kien Dinh

Bạn nói đúng rồi đấy, việc generate key đó thì nên được xử lý ở Backend. Việc này có thể bớt workload cho việc validate key ở phía BE. Nhưng nếu generate ở FE, thì Backend sẽ bớt workload cho việc generate (ko đáng kể), nhưng có thể để lại lỗ hổng từ phía FE. Một hệ thống secure thì nên có practice là validate data ở cả phía FE và BE. Nếu BE vẫn kiên quyết không generate key thì bạn cứ tự gen thôi, bạn có thể dùng nano id để tạo key dạng youtube id nha: https://github.com/ai/nanoid

Ảnh đại diện của Minh Monmen

Hic, mình định bảo bạn về đề xuất công ty cho team backend kia đi học lại về bảo mật cơ bản, nhưng nghĩ mãi cũng chả có cái khóa nào nó dạy về cái này. Giờ bạn chỉ cần nói với team backend như này này: - User vào web, anh muốn xác thực xem user có cái email X không, tức là phải gửi mã gì đó mà User KHÔNG BIẾT vào cái email kia. - Giờ frontend lại là chỗ tạo ra cái mã đấy, mà user lại có thể đọc được request mà frontend gửi lên (mở inspect web lên), tức là nó thấy luôn cái mã đấy rồi, THÌ CÒN CẦN GÌ VÀO MAIL VỚI XÁC THỰC CÁI GÌ NỮA? Đó vậy thôi. Quy trình xác thực email đúng ra phải là: - User submit email từ frontend lên backend - Backend tạo code dùng 1 lần, tạo email form rồi gửi tới email của user - User submit cái code kia (sau khi đọc được email mới biết) từ frontend lên backend - BE xác nhận user đã confirm email

Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!

Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.

Xem thêm

Đồng ý với Điều khoản dịch vụ Chính sách bảo mật của Careerly

Bạn đã có tài khoản rồi?

Đăng ký ngay bây giờ để đọc toàn bộ câu trả lời!

Cộng đồng lập trình viên sẽ giải đáp tường tận cho bạn.