INJECT LÀ GÌ

     

Trong cải cách và phát triển phần mềm, các bạn thường xuất xắc nghe đến các khái niệm Dependency Injection, SQL Injection, etc nhưng không hiểu biết nhiều nó như vậy nào.

Bạn đang xem: Inject là gì

Thực ra những cơ chế này thì vốn rất solo giản, chả có gì sệt biệt.Bài viết này bản thân sẽ giải thích về nguyên tắc Injection với Ví dụ tương quan trong Software Engineering

Ai yêu cầu đọc bài xích này:

Dành mang lại dân chăm đã biếtrồi có phương pháp để tiết kiệm time để phân tích và lý giải hoặc chém cho các bạn không biết gì.Dân ko chuyên, chần chừ gì hoàn toàn có thể hiểu cùng tự tin chém về các nguyên tắc Injection vào Software Engineering.Dành mang đến việc tham khảo giúp các bạn lười giải thích chia sẻ cho nhau.

I. Injection là gì?

Trước hết chúng ta cần gọi Injection là gì?

Injection dịch è từ giờ Anh thì là sự tiêm chích, tiêm nhiễm. Ex: tiêm dung dịch phòng, tiêm chích ma túy, etc.

Kết quả của bài toán tiêm này thì có thể mang lại hiệu ứng tốt hoặc xấu tùy vào bản thân tiêm thuốc tuyệt là ma túy hoặc tiêm dung dịch độc dành riêng cho việc tử hình các tử tù sinh hoạt Việt Nam hay như là 1 số nước trên nạm giới.

Nhìn 1 cách khái quát tháo hơn, quy trình tiêm là mang lại thuốc hoặc chất kích thích vào hệ tuần trả máu của khung hình và lợi dụng hệ tuần hoàn máu này nhằm làm biến đổi (tốt hoặc xấu) đến cơ thể.

Tuy nhiên ví dụ nghỉ ngơi trên là tôi đang nói tới việc tiêm dung dịch dịch trần tiếng anh là Vaccine Injection. Nó chỉ là 1 trong những trường phù hợp của Injection trong giờ đồng hồ Anh thôi.

Thật ra Injection trong tiếng Anh thì rất có thể tiêm (injection) tương đối nhiều các nhiều loại khác ngoài thuốc. Ví dụ như trong Software Engineering thì có những khái niệm như SQL Injection, OS command Injection, Dependency Injection.

Do từ vựng tiếng việt tiêu giảm nên tín đồ ra dịch là tiêm, và chỉ bao gồm từ tiêm dung dịch là map với injection nên mọi bạn chỉ nghĩ mang đến là bài toán tiêm thuốc. Với hiện chưa tồn tại từ làm sao để maps với từ injection này nên tạo cho mọi bạn bị hiểu lầm là việc tiêm dung dịch (vốn chỉ là một trong những trong các trường hợp cụ thể của injection trong tiếng Anh). Nói chung việc phối giống cho gà tuyệt thụ tinh ở tín đồ thì giờ anh cũng có thể gọi là 1 quy trình injection do ảnh hưởng tác động vào phép tắc sinh sản gồm sẵn.

Tôi thì không hẳn là nhà ngữ điệu học đề nghị cũng không dám định nghĩa thêm từ giờ đồng hồ việt như thế nào đáp ứng đúng chuẩn với tự Injection. Cho nên vì thế từ các đoạn tiếp theo sau tôi sẽ sử dụng từ Injection mang đến nó minh bạch với tự "tiêm" trong giờ đồng hồ Việt nhé.

Nói một cách trừu tượng hóa Injection là sự tác động mang đến đến cơ chế tất cả sẵn và tận dụng cơ chế này cho 1 mục đích làm sao đó.

Như trường hòa hợp tiêm dung dịch thì là sử dụng thuốc tác động ảnh hưởng đến hiệ tượng tuần hoàn máu. Cùng nhờ hình thức này dung dịch được phân phát tán khắp cơ thể.

Ở trong cải tiến và phát triển phầm mượt thì vẻ ngoài này cũng y y như vậy. Nếu đọc như trên thì nguyên lý này thì vốn khôn xiết simple, chả tất cả gì đặc trưng đúng ko nào?

Đi sâu so sánh sâu thêm 1 chút thì để triển khai được câu hỏi injection không thiếu thì sẽ cần các đối tượng sau :

Đối tượng buộc phải inject.Lỗ hổng của cơ chế.Cơ chế sẵn có.

Tôi xin phép ví dụ trường hợp tiêm dung dịch (1 trong số trường vừa lòng của injection) thì đã như sau :

Đối tượng buộc phải inject: thuốc.Lỗ hổng: lỗ, ven mạch máu để có thể tiêm tác động ảnh hưởng vào hệ tuần hoàn.Cơ chế sẵn có: hệ tuần hoàn máu.

Ở trên đây tôi ko nói đến công dụng của vấn đề injection vị nói phổ biến mục đích sau cuối là vẫn tác động thay đổi đến đồ vật chủ, hiệu quả tốt xuất xắc xấu không bàn ở đây.

Như lấy ví dụ tôi nói trên thì quy trình tiêm thuốc mọi bạn đều không xem xét 1 đối tượng rất quan tiền trọng, chính là "lỗ hổng" - nói một giải pháp dễ hiểu..

Khi triển khai tiêm thì sẽ đề xuất tìm lỗ ven quan trọng đầu tiên. Nếu như như trên khung hình không có một cái "lỗ" như thế nào để hoàn toàn có thể chọc kim tiêm vào, thì sẽ không cách nào ảnh hưởng vào hệ tuần hoàn máu để xong xuôi việc tiêm thuốc(injection).

Và trong số khái niệm về Injection trong Software Engineering thì mẫu "lỗ" cũng rất quan trọng, và bao giờ bắt đầu việc injection thì fan ta đang cần tìm tới cái "lỗ" đầu tiên như việc bước đầu quá trình giao phối của những loài động vật có vú.

Các phần tiếp theo tôi cũng nhắc đến các "lỗ" hổng này và chúng ta nhớ để ý nhé.

II - SQL Injection

SQL Injection thì trong Software Engineering thường kể đến lỗ hổng bảo mật thông tin của phầm mềm được cho phép người dùng hoàn toàn có thể truy nhập trực tiếp vào cơ sở dữ liệu (database) của cả khối hệ thống nhằm đánh tráo thông tin, phá hoại hệ thống.

Trước hết dành riêng cho ai không biết, SQL ở đây là các câu lệnh dùng làm truy nhập vào database của 1 hệ thống.

*

Cũng y như việc tiêm thuốc, thay do inject dung dịch thì có thể inject các câu lệnhSQL từ bên phía ngoài thông qua lý lẽ truy nhập cơ sở dữ liệu của phần mềm. Các đối tượng người dùng trong câu hỏi injection này bao hàm :

Đối tượng nên inject: các câu lệnh SQL.Lỗ hổng: các nguồn input từ người dùng bên ngoài. Ex: nhập user name, password, nhập tin tức trên trang web, phần mềm.Cơ chế sẵn có: nguyên tắc truy nhập đến cơ sở tài liệu của hệ thống.

Ví dụ như khi tôi viết blog trên trang web này. Tôi thay vị viết văn bản blog mà cố vào đó, thêm những câu lệnh SQL biến đổi database của hệ thông web để sửa 1 topic của mình thì rank cao nhất, rate tối đa để nạp năng lượng tiền công viết chẳng hạn.

Xem thêm: Bà Bầu Ăn Dưa Gang Được Không? Bầu 3 Tháng Đầu Ăn Dưa Gang Được Không

Cũng giống hệt như việc tiêm dung dịch thôi, thay bởi vì tôi tiêm (inject) thuốc để chữa bệnh hay làm chết bạn thì tôi Inject SQL vào hệ thông để chỉnh sửa data của khối hệ thống hoặc làm bị tiêu diệt hệ thống.

Về mặt bảo mật thông tin khi mà bạn dùng dễ chịu lấy hoặc ráng data của khối hệ thống thông qua câu hỏi inject các câu lệnh SQL như trên là siêu nguy hiểm.

Ví dụ: đánh tráo thông tin, sửa dổi thông tin tài khoản trên hệ thống tài chính, ngân hàng. Ăn cắp bảng lương của doanh nghiệp thông qua trang web cai quản của công ty.

Như tôi đã nói ở trên lỗ hổng rất quan trọng để tiến hành việc injection, ở đây lỗ hổng là từ input của bạn dùng, lúc mà người dùng dễ chịu inject các câu lệnh SQL để biến đổi cả hệ thống.

Cho buộc phải về phương diện bảo mật thông tin thì bài toán kiểm tra, validate các nguồn đầu vào này của người dùng làm ngăn ngăn truy nhập trực tiếp vào là hết sức quan trọng. Tương tự còn tồn tại khái niệm không giống về bảo mật như OS Command Injection, trường phù hợp này do đó inject các câu lệnh gọi đến hệ quản lý và điều hành của hệ thống nhằm giật quyền kiểm soát điều hành hoặc phá hoại. Về nguyên tắc nó vốn đơn giản và dễ dàng như bài toán tiêm đã giải thích ở phần I.

III - Dependency Injection

Để hiểu được về bề ngoài Dependency Injection trước hết bạn phải hiểu trước về nguyên tắc Dependencyinversion. Tuy nhiên về Dependencyinversion thì lại là quan niệm hơi loằng ngoằng 1 chút, nhưng mà nó vấn 1-1 giản.

Để lý giải tôi ban đầu với lấy một ví dụ sau:

Bạn là ông chủ của công ty, hằng ngày cứ mang đến chiều về phải xem lại tin tức tổng kết doanh thu của công ty. Và để gia công được thư cam kết của các bạn sẽ phải phun mail tổng kết sản phẩm ngày. Mặc dù ngày nào các bạn cũng bắt buộc mất công giục các bạn thư ký đề xuất viết report đúng giờ, rồi dịp thì cần tin tức này lúc thì cần thông tin kia. Nói bình thường là quá trình của bạn rất phụ thuộc vào vào các bạn thư ký.

Thời gian tiếp nối bạn rút tay nghề sâu sắc, biên soạn template, ra dụng cụ về thời gian báo cáo bắt thư ký đề xuất làm theo. Và sau đó cứ mang lại chiều là chúng ta xem thông tin tổng kết doanh thu của người sử dụng mà không cần thiết phải giục hay nhờ vào nhiều vào thư cam kết nữa.

Như vậy liệu có phải là sự nhờ vào vào các bạn thư ký đã bị đảo ngược đúng không? chúng ta thư cam kết sẽ đề nghị tuân theo những điều kiện mà các bạn qui định cố vì chúng ta phải đuổi theo và giục thư ký viết báo cáo.

Quá trình đảo ngược sự phụ thuộc này trong phần mềm gọi là nguyên tắc dependency inversion. Module điện thoại tư vấn sẽ gửi ra những phương thức, hiệ tượng để dependency module phải tuân theo khi triển khai 1 công dụng nào đó của phần mềm.

Như trong ví dụ trên thì sau khi ra những qui định bên trên thì chúng ta cũng có thể thay gắng bất ký cô thư cam kết nào miễn là thỏa mãn điều kiện báo cáo đúng theo template cùng đúng giờ. Nói theo cách khác khác bạn cũng có thể inject bất kỳ cô thư ký nào vào phương pháp xem lại tin tức tổng kết doanh thu của công ty.

*

Khái quát lác thêm chút thì một cô thư ký ngẫu nhiên gọi là 1 trong những sự phụ thuộc (dependency) trong chế độ xem lại thông tin tổng kết lợi nhuận của công ty.

Cơ chế mà injectDependency trên điện thoại tư vấn là Dependency Injection.

Các đối tượng người tiêu dùng trong bài toán injection này bao hàm :

Đối tượng buộc phải inject: thư ký.Lỗ hổng: những quy định về template, ngày giờ báo cáo dành cho một thư ký bất kỳ.Cơ chế sẵn có: vấn đề xem lại thông tin tổng kết lệch giá của công ty.

Thế còn về Software enginering thì sao? thiệt ra vẻ ngoài nó vãn như trên. Trong một trong những phần mềm thì thường được thiết kế phân thành nhiều các thành phần bé dại gọi là những module/class. Những module/class thường sẽ hotline nhau để triển khai 1 chức năng của phần mềm.

Ví dụ: như khi người tiêu dùng login vào website này ví dụ điển hình thì thường sẽ có ít tuyệt nhất 2 module sau điện thoại tư vấn nhau bao gồm:

Module chủ yếu (làm trọng trách login, xác thực username/password).Module truy nhập vào cơ sở dữ liệu.

Module thiết yếu sẽ hotline đến module tầm nã nhập vào cơ sở dữ liệu để đưa username/password rồi kiểm tra bao gồm hơp lệ nhằm login tuyệt không. Module được điện thoại tư vấn đến rõ ràng là module truy nã nhập vào cơ sở dữ liệu thì call là 1dependency module hay còn dịch là module dựa vào của module chính.Dependency Injection là chế độ inject bất kỳdependency module không giống vào cách thức gọi đến nó.

Để làm cho được điều này như những đã phân tích và lý giải về hình thức injection vào phần I thì nhằm thực hiên được sẽ cần phải có 1 dòng "lỗ" hổng, để tạo thành lỗ hổng này sẽ yêu cầu dựa trên nguyên lý dependency inversion (sự hòn đảo ngược phụ thuộc) trong software design.

Cụ thể lỗ hổng được tạo thành ở đây là các phương thức, cách thức mà dependency module bắt buộc phải cung ứng cho lý lẽ gọi đến nó. Trong software kiến thiết thì hotline là interface qui định các phương thức thân 2 module.

Ví dụ như trong chính sách login, dependency module sẽ cần hỗ trợ cácinteface bao hàm phương thức để chất vấn username, password trong database.

Các đối tượng người tiêu dùng trong việc injection của hình thức login bao gồm :

Đối tượng buộc phải inject : dependency module mà truy nhập vào các đại lý dữ liệu.Lỗ hổng :inteface qui định các phương thức màdependency module nên follow và cung ứng (dựa trên hiệ tượng Dependency Inversion vẫn nói sinh hoạt trên)Cơ chế sẵn bao gồm : phép tắc login vào hệ thống.

Xem thêm: Cách Gửi Quần Áo Cho Người Âm Năm 2022, Cách Đốt Vàng Mã (Quần Áo) Cho Người Âm

Kết luận

Cơ chế Dependency Injection này hết sức có chân thành và ý nghĩa trong bài toán phát triển phần mềm khai mà các đội trong dự án trở nên tân tiến song song các module, unit kiểm tra hoặc việc duy trì thay đổi, mở rộng source code của module này tuy thế không bị ảnh hưởng đến module khác.

Như tôi sẽ ví dụ mang đến trường thích hợp sếp và thư cam kết ở trên thì các chúng ta cũng có thể thấy cơ Dependency Injection này rất có ý nghĩa ngay cả vào đời sống buộc phải không?

Khái niệm Dependency Injection này vẫn đơn giản và dễ dàng như vấn đề tiêm dung dịch đúng không?

Nếu đọc rồi thì nhớ like và chia sẻ nhé để tôi còn có động lực viết những blog không giống :)