DANH MỤC: PHP OPTIMIZE

CSRF là gì và cách phòng chống


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

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 src="http://example.com/delete/all_post" 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:

  • Tag iframe:
<iframe src="http://examole.com/delete/all_post"></iframe>
  • Tag link:
<link rel="stylesheet" type="text/css" href="http://examole.com/delete/all_post">
  • Tag script:
<script src="http://examole.com/delete/all_post" type="text/javascript" charset="utf-8" async defer></script>
  • Css:
<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.

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

Biển học vô biên, quay đầu là dại!

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia