it-swarm-vi.com

Làm thế nào để phát triển phần mở rộng Joomla an toàn?

Trước khi tôi viết phần mở rộng đầu tiên của mình, tôi muốn hiểu làm thế nào để thiết kế nó một cách bất khả xâm phạm nhất có thể.

Có một bộ quy tắc để viết phần mở rộng Joomla an toàn không?

Tôi chỉ có thể tưởng tượng SQL tiêm mối đe dọa có thể xảy ra vì vậy tôi biết rằng đầu vào biểu mẫu có thể không bao giờ được chèn trực tiếp vào lệnh SQL 'như hiện tại'.

Các vectơ tấn công khác tôi nên biết khi viết mô-đun hoặc plugin tùy chỉnh là gì?

7
miroxlav

Một điều chính mà bạn đã chỉ ra là SQL Injection. Đây là một điều mà một vài người mà tôi thấy dường như hoàn toàn bỏ lỡ và bắt đầu phát triển bằng cách sử dụng non tiêu chuẩn mã hóa Joomla và bắt đầu viết hàng đợi SQL bằng cách sử dụng mysql_* lệnh.

Điều thứ hai mà tôi đã đề cập ở điểm đầu tiên, vốn luôn tuân theo các tiêu chuẩn mã hóa Joomla. Lần duy nhất bạn không nên là khi Joomla không cung cấp giải pháp thay thế.

Thứ ba, nếu tiện ích mở rộng của bạn tạo thư mục hoặc tệp, thì hãy đảm bảo bạn cấp cho họ quyền chính xác và không bắt đầu tạo thư mục chmod 777. Đây là lý do chính xác tại sao K2, một trong những tiện ích mở rộng phổ biến nhất được coi là dễ bị tấn công và tạm thời bị xóa khỏi JED.

Luôn sử dụng mã thông báo với các hình thức. Điều này sẽ đảm bảo rằng không có cuộc tấn công trái phép từ các trang web khác có thể được thực thi. Để biết thêm thông tin về điều này, hãy xem những điều sau đây:

http://docs.j Joomla.org/How_to_add_CSRF_anti-spaggering_to_forms

Nếu bạn không chắc chắn về điều gì đó đã chạy một số thử nghiệm, hãy thử bật lên Đánh giá mã Stackexchange vì có thể có ai đó sẵn sàng kiểm tra mã của bạn cho bạn.

Một điều bạn có thể làm là xem Danh sách tiện ích mở rộng dễ bị tổn thương để xem các tiện ích mở rộng tạm thời (cho đến khi được sửa) bị xóa khỏi Thư mục tiện ích mở rộng Joomla do không an toàn.

Hy vọng điều này cung cấp cho bạn một cái nhìn sâu sắc và may mắn với phần mở rộng đầu tiên của bạn

8
Lodder

Theo tài liệu chính thức, đây là một số bước về chủ đề Nguyên tắc mã hóa an toàn :

  • Xác thực bất kỳ dữ liệu nào bạn nhận được từ yêu cầu (POST, GET, COOKIES, v.v.). Đừng tin tưởng người dùng và càng nghiêm khắc càng tốt. Nếu bạn mong muốn integer, đừng cho phép string được chấp nhận.

  • Tải lên tệp - tránh, bất cứ khi nào có thể, chấp nhận tệp trên các trang web công cộng. Nếu bạn cần xác thực thông tin meta tệp và thực hiện tất cả các kiểm tra có thể.

  • Xây dựng các truy vấn SQL - hiểu cách hoạt động của SQL tiêm mà còn cách bạn xử lý các lỗi cơ sở dữ liệu. Bạn càng hiển thị nhiều lỗi, bạn càng cung cấp nhiều thông tin về cấu trúc cơ sở dữ liệu của mình. Lý tưởng nhất là bạn đăng nhập lỗi nhưng không hiển thị chúng.

  • Biểu mẫu bảo mật bằng cách sử dụng mã thông báo

7
Valentin Despa

Nó hầu như an toàn cho hầu hết các tiện ích mở rộng, Tuy nhiên, hãy thận trọng với bất kỳ thứ gì có thể cần lưu/chỉnh sửa tệp, lọc không đúng hoặc xác thực có thể tạo điểm nhập cảnh.

Miễn là bạn sử dụng API của JDatabase một cách chính xác, bạn cũng nên an toàn khỏi việc tiêm sql. Bạn có thể nhìn vào com_content hoặc là plg_system_loadpositon trong bản cài đặt Joomla để giúp tìm ra một số điểm tốt hơn của các API Joomla khác nhau (vì tài liệu hơi khó theo dõi).

Cũng sử dụng API nếu chúng thất bại và một số lỗ hổng được sử dụng, bản sửa lỗi có thể sẽ trở thành một bản cập nhật cốt lõi (nếu là JDatabase, tôi có thể tưởng tượng một bản phát hành Joomla trong vòng một giờ nếu phát hiện ra nó: D), thay vào đó là một bản cập nhật để mở rộng của bạn.

Đây là một lỗ hổng lớn của nguồn mở là bất kỳ ai có ý định làm hại đều có tất cả thông tin cần thiết để làm như vậy. Nếu đó là một phần mở rộng khép kín (không có sẵn công khai) thì sẽ không bao giờ có vấn đề.

Cuối cùng, phần mở rộng càng đơn giản (càng ít mã) thì càng có nhiều khả năng nó sẽ là 'bất khả xâm phạm'. Khi một phần mở rộng phát triển, có nhiều nơi hơn một lỗi nhỏ có thể xảy ra để tạo một điểm vào.

4
Jordan Ramstad