Tổng quan về phòng chống các cuộc tấn công trong Django

Django được xem là một trong những framework có tính bảo mật mạnh mẽ nhất hiện nay. Do đó, bài viết hôm nay mình sẽ cùng các bạn điểm qua những cách chống lại các cuộc tấn công có trong Django.

Tấn công Cross site scripting (XSS):

Các cuộc tấn công XSS cho phép người dùng chèn các mã script phía máy khách vào trình duyệt của những người dùng khác. Điều này thường thực hiện bằng cách lưu trữ các mã độc trong cơ sở dữ liệu nơi nó sẽ được truy xuất và hiển thị cho người dùng khác hoặc bằng cách yêu cầu người dùng nhấp vào liên kết khiến mã của kẻ tấn công được trình duyệt của người dùng thực thi. Tuy nhiên, các cuộc tấn công XSS có thể bắt nguồn từ bất kỳ nguồn dữ liệu không đáng tin cậy nào, chẳng hạn như cookie hoặc dịch vụ web, bất cứ khi nào dữ liệu không được sàng lọc trước khi đưa vào một trang. Sử dụng Django có thể bảo vệ bạn, chống lại phần lớn các cuộc tấn công XSS.

Tấn công Cross site request forgery (CSRF):

CSRF sẽ được thực hiện bằng cách cho những người dùng trái phép thực hiện các hành động bằng cách sử dụng thông tin đăng nhập của người dùng khác mà người dùng đó không biết hoặc không đồng ý.

Django được tích hợp tính năng bảo vệ trước hầu hết các loại tấn công CSRF, miễn là bạn biết cách sử dụng chúng. Tuy nhiên, với bất kỳ kỹ thuật nào cũng đều có vài hạn chế nhất định, ví dụ như bạn sẽ có thể phải vô hiệu hóa tất cả các mô-đun CSRF cho các chế độ xem cụ thể. Ngoài ra, còn vài điểm giới hạn khác nếu trang web của bạn có tên phụ nằm ngoài quyền hạn của bạn.

Ta có thể bảo vệ CSRF hoạt động trên Django bằng cách kiểm tra bí mật từng yêu cầu của POST. Điều này đảm bảo rằng một người dùng độc hại không thể “replay” một biểu mẫu rồi đăng lên trang web của bạn và có một người dùng đã đăng nhập khác vô tình nhấp vào biểu mẫu đó.

Tấn công SQL Injection:

SQL injection là một kiểu tấn công trong đó người dùng độc hại có thể thực thi mã SQL tùy ý trên cơ sở dữ liệu. Điều này có thể dẫn đến việc các bản ghi bị xóa hoặc rò rỉ dữ liệu.

Truy vấn dữ liệu trên Django được bảo vệ khỏi SQL injection vì các truy vấn của chúng được xây dựng bằng cách sử dụng tham số hóa truy vấn. Mã SQL của truy vấn được xác định riêng biệt với các tham số của truy vấn. Vì các tham số có thể do người dùng cung cấp và do đó không an toàn.Django cũng cung cấp cho các nhà phát triển quyền để viết các truy vấn thô hoặc tùy chỉnh sql.

Tấn công Clickjacking:

Clickjacking là một kiểu tấn công trong đó một trang web độc hại bao bọc một trang web khác trong một khung. Cuộc tấn công này có thể dẫn đến việc người dùng không nghi ngờ và bị lừa thực hiện các hành động không mong muốn trên trang web mục tiêu.

Django chứa tính năng bảo vệ chống tấn công bằng nhấp chuột bằng cách trong trình duyệt hỗ trợ có thể ngăn trang web được hiển thị chồng lên. Có thể tắt tính năng bảo vệ trên mỗi chế độ xem khác nhau. Tính năng này được khuyến khích thực hiện cho bất kỳ trang web nào không chỉ các trang của Django, không để trang web động hại được bao bọc trong khung trang hoặc chỉ cần một góc nhỏ của trang web.

Tấn công SSL / HTTPS:

Việc triển khai trang web của bạn sau HTTPS luôn tốt hơn cho bảo mật. Nếu bạn không thực hiện như vậy thì người dùng mạng độc hại có thể phát hiện thông tin xác thực hay bất kỳ thông tin nào khác được chuyển giữa máy khách và máy chủ, và trong một số trường hợp - những kẻ tấn công mạng còn có thể thực hiện thay đổi dữ liệu được gửi theo một trong hai hướng (người dùng tới server - server tới người dùng).

Trong một số trường hợp mà HTTPS các bạn có thể tham khảo các cách dưới đây:

  • Thiết lập SECURE_PROXY_SSL_HEADER.
  • Đặt lại SECURE_SSL_REDIRECT thành True, để các yêu cầu qua HTTP được chuyển hướng đến HTTPS.
  • Sử dụng cookie an toàn.
  • Sử dụng HTTP Strict Transport Security (HSTS)

  • Nguồn: django tutorial

    Công nghệ được nhắc đến trong bài viết này

    Tên Công NghệPhiên BảnPhát Hành
    Django---
    5 phút đọc·559 lượt xem·