Csrf token laravel là gì

Chắc hẳn các bạn cũng đã nghe ở đâu đó từ CSRF này rồi đúng không? hoặc khi các bạn sử dụng các framework cũng thấy có nó ,... Nhưng các bạn chưa hiểu nó là gì? => Bài này mình sẽ giúp mọi người giải đáp thắc mắc về nó!

1, CSRF Là gì?

-CSRF là viết tắt của từ "Cross-Site Request Forgery", đây là một kỹ thuật tấn công sử dụng quyền chứng thực của người dùng để thực hiện các hành động trên một website khác.

-Kỹ thuật này được xuất hiện lần đầu tiên vào năm 1990 nhưng nó chưa được phát hiện một cách trực tiếp, cho đến năm 2007 trở đi thì nó mới nổi lên rầm rộ (vụ hơn 18tr người dùng ebay tại hàn quốc bị lộ thông tin các nhân).

. Kỹ thuật này được nhận xét là khá nguy hiểm và hậu quả mà nó gây ra không thể kể đến được :D. Và cũng chính các ông lớn như Youtube, facebook,.. cũng đã từng dính phải các lỗi này.

Csrf token laravel là gì

2, Các hình thức tấn công.

-Như các bạn đã biết, thì các ứng dụng website đều thực hiện giao thức HTTP để nhận yêu cầu từ người dùng để thự thi các lệnh tương ứng. Và dựa vào cách này thì các Hacker có thể nhúng kèm vào một số request đến các ứng dụng web khác khi bạn vào một website có chứa mã độc.

Hãy tưởng tượng bạn đang làm admin của một website nào đó chẳng hạn, mà khi đó bạn đang chưa logout ra khỏi hệ thống quản trị (phiên làm việc vẫn còn) và bạn đi sang một diễn đàn khác đọc tin tức hay làm gì đó. Khi này hacker có thể chèn một mã độc dạng như sau để có thể thực thi một vài hành động trên trang web của bạn (ở đây mình demo là xóa tất cả bài viết):

<img heigth="0" width="0">

-Trường hợp trên sẽ hoàn toàn đúng nếu như bạn chưa đăng xuất ra khỏi hệ thống web của bạn.

Ngoài cách trên thì hacker có thể thực thi được CSRF qua các HTML tag sau nữa:

<iframe ></iframe> <link rel="stylesheet" type="text/css" href="http://examole.com/delete/all_post"> <script type="text/javascript" charset="utf-8" async defer></script> <p style="background-image: url(http://examole.com/delete/all_post")"></p>
  • Và vô vàn cách thức khác nữa...

3, Các cách phòng tránh.

-Tuy rằng lỗi này rất phổ biến, nhưng phòng trống nó lại rất đơn giản. Các bạn có thể phòng trống bằng các cách sau:

Phòng trống phía client

  • Để phòng trống được cách này thì mỗi các nhân chúng ta nên đăng xuất ra khỏi các website quan trong khi không dùng đến, đặc biệt là các website lên quan đến tiền tệ.

  • Không click vào các link lạ trên bất kỳ một trang web, gmail, facebook, ... nào.
  • Trong khi thực hiện các giao dịch quan trọng thì không lên vào các trang web khác.
  • ...

Phía Server

  • Chúng ta có thể thực hiện xây dựng captcha cho các yêu cầu quan trọng.
  • Sử dụng CSRF token để có thể xác nhận request hợp lệ (xem csrf token trên PHP).
  • Đối với các hệ thống quan trọng thì chúng ta nên thiết lập sẵn các ip được cho phép.

4, Lời kết.

-Chúng ta nên sử dụng các cách này để bảo vệ chính các website của mình và của khách hàng. Để giảm thiểu được những điều không mong muốn có thể xảy ra.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vấn đề bảo mật website có thể nói là rất quan trọng. CSRF là một kiểu tấn công diễn ra khá phổ biến hiện nay trên các website không bảo mật. Nếu bạn là một lập trình viên thì cần nắm rõ kiểu tấn công này để đảm bảo tính bảo mật cho ứng dụng web của mình.

CSRF hay còn gọi là kỹ thuật tấn công “Cross-site Request Forgery“, nghĩa là kỹ thuật tấn công giả mạo chính chủ thể của nó. CSRF nói đến việc tấn công vào chứng thực request trên web thông qua việc sử dụng Cookies. Đây là nơi mà các hacker có khả năng sử dụng thủ thuật để tạo request mà bạn không hề biết. Vì vậy, một CSRF là hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệt của nạn nhân.

CSRF là một kiểu tấn công gây sự nhầm lẫn tăng tính xác thực và cấp quyền của nạn nhân khi gửi một request giả mạo đến máy chủ. Vì thế một lỗ hổng CSRF ảnh hưởng đến các quyền của người dùng ví dụ như quản trị viên, kết quả là chúng truy cập được đầy đủ quyền.

Csrf token laravel là gì

Khi gửi một request HTTP, trình duyệt của nạn nhân sẽ nhận về Cookie. Các cookie thường được dùng để lưu trữ một session (Đọc thêm bài Session là gì? để hiểu thêm cách hoạt động của Session và cookies) để định danh người dùng không phải xác thực lại cho mỗi yêu cầu gửi lên.

Nếu phiên làm việc đã xác thực của nạn nhân được lưu trữ trong một Cookie vẫn còn hiệu lực, và nếu ứng dụng không bảo mật dễ bị tấn công CSRF. Kẻ tấn công có thể thử dụng CSRF để chạy bất cứ requets nào với ứng dụng web mà ngay cả trang web không thể phân biệt được request nào là thực hay giả mạo.

Ví dụ để hiểu rõ hơn, khi ứng dụng web có một chức năng đơn giản đó là thay đổi mật khẩu người dùng. Việc gửi lên server theo phương thức HTTP GET thông thường. Nội dung gửi lên là password mới và confirm lại password vừa nhập:

  • Người dùng đã đăng nhập trên web của bạn, cookie sẽ được tạo và lưu trữ dưới trình duyệt, khi bạn vào site lần sau bạn không cần phải đăng nhập lại. Giả sử bạn chưa đăng thoát, lúc này cookies của bạn vẫn còn hạn trong phiên làm việc.
  • Lúc này nếu website của bạn mắc lỗi CSRF, người dùng vô tình vào một trang hacker giả mạo với mục đích lấy tài khoản từ ứng dụng web của bạn. Trong trang giả mạo hacker sẽ dùng script để chạy một url để cố ý reset mật khẩu người dùng trên trang của bạn: https://website-cua-ban .com/vulnerabilities/csrf/?password_new=hacked&password_conf=hacked&Change=Change#

Như vậy khi Victim (User) vô tình vào trang web-hacker-gia-mao .com đã reset password của bản thân tại trang website-cua-ban .com. Hacker nếu biết thông tin username sẽ thử vào với password đã cài đặt:hacked và có thể vào một cách bình thường.

  Cross-Site Request Forgery (CSRF) sắp hết thời?!!

Dựa trên nguyên tắc của CSRF “lừa trình duyệt của người dùng (hoặc người dùng) gửi các câu lệnh HTTP”, thông thường để tránh tấn công ta sẽ chia làm hai đối tượng, một là cách một là phái client (người dùng cuối) và hai là phía server.

Có thể bạn quan tâm

  SQL Injection là gì? Cách giảm thiểu và phòng ngừa SQL Injection

  Những góc khuất "đeo bám" người làm nghề lập trình

  Cách mà một dòng code đã thay đổi cuộc đời tôi!

Để tránh trở thành nạn nhân của các cuộc tấn công CSRF nên thực hiện một số lưu ý sau:

  • Nên đăng xuất khỏi các website quan trọng: Tài khoản ngân hàng, thanh toán trực tuyến, các mạng xã hội, gmail… khi đã thực hiện xong giao dịch.
  • Nên login vào một máy riêng và không cho người thứ 2 tiếp xúc với máy đó.
  • Không nên click vào các đường dẫn mà bạn nhận được qua email, qua facebook … Khi bạn đưa chuột qua 1 đường dẫn, phía dưới bên trái của trình duyệt thường có địa chỉ website đích, bạn nên lưu ý để đến đúng trang mình muốn.
  • Không lưu các thông tin về mật khẩu tại trình duyệt của mình. Không nên chọn các phương thức “đăng nhập lần sau”, “lưu mật khẩu” …
  • Trong quá trình thực hiện giao dịch hay vào các website quan trọng không nên vào các website khác, có thể chứa các mã khai thác của kẻ tấn công.

Cho đến nay vẫn chưa có biện pháp nào có thể phòng chống triệt để CSRF. Sau đây là một vài kĩ thuật sử dụng.

  • Sử dụng captcha, các thông báo xác nhận: Captcha được sử dụng để nhận biết đối tượng đang thao tác với hệ thống là con người hay không. Các thao tác quan trọng như “đăng nhập” hay là “chuyển khoản” ,”thanh toán” thường là hay sử dụng captcha. Những chức năng quan trọng như reset mật khẩu, xác nhận thay đổi info của account cũng nên gửi url qua email đã đăng ký để người dùng có thể click vào xác nhận.
  • Sử dụng csrf_token: token này sẽ thay đổi liên tục trong phiên làm việc, và khi thay đổi thông tin gửi kèm thông tin token này. Nếu token được sinh ra và token được gửi lên ko trùng nhau thì loại bỏ request.
  • Sử dụng cookie riêng biệt cho trang admin: Nên để trang quản trị ở một subdomain riêng để chúng không dùng chung cookies với front end của sản phẩm. Ví dụ nên đặt là admin.topdev.vn hay hơn là topdev.vn/admin.
  • Kiểm tra IP: Một số hệ thống quan trọng chỉ cho truy cập từ những IP được thiết lập sẵn, hoặc chỉ cấp phép truy cập quản trị qua IP local hoặc VPN.

TopDev vừa giới thiệu xong các kiến thức về CSRF là gì? Tìm hiểu kỹ thuật tấn công CSRF cũng như cách phòng chống tấn công giả mạo CSRF. Hy vọng những thông tin trong bài viết sẽ giúp ích cho các bạn đang tìm kiếm thông tin. Chúc các bạn vui vẻ!

  Fat Model - Bạn sẽ đặt logic ở đâu?