Inject là gì

     

Trong cách tân và phát triển phần mềm, các bạn thường hay nghe đến những khái niệm Dependency Injection, SQL Injection, etc nhưng không hiểu biết nó như thế nào.

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

Thực ra các cơ chế này thì vốn rất đơn giản, chả gồm gì đặc biệt.Bài viết này mình sẽ phân tích và lý giải về nguyên tắc Injection cùng Ví dụ tương quan trong Software Engineering

Ai đề xuất đọc bài bác này:

Dành đến dân chuyên đã 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 chúng ta không biết gì.Dân ko chuyên, lần chần gì hoàn toàn có thể hiểu cùng tự tin chém về các nguyên lý Injection vào Software Engineering.Dành cho việc tìm hiểu thêm giúp chúng ta lười giải thích share cho nhau.

I. Injection là gì?

Trước hết các bạn cần hiểu Injection là gì?

Injection dịch trằn từ giờ đồng hồ Anh thì là sự việc tiêm chích, tiêm nhiễm. Ex: tiêm thuốc phòng, tiêm chích ma túy, etc.

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

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

Tuy nhiên ví dụ sinh sống trên là tôi đang nói tới việc tiêm dung dịch dịch è tiếng anh là Vaccine Injection. Nó chỉ là một trong trường vừa lòng của Injection trong tiếng Anh thôi.

Thật ra Injection trong giờ đồng hồ Anh thì hoàn toàn có thể tiêm (injection) không hề ít các loại khác ngoài thuốc. Ví như trong Software Engineering thì có những khái niệm như SQL Injection, OS command Injection, Dependency Injection.

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

Tôi thì không hẳn là nhà ngữ điệu học cần cũng không dám định nghĩa thêm từ giờ việt nào đáp ứng đúng đắn với trường đoản cú Injection. Cho nên từ những đoạn tiếp theo tôi sẽ sử dụng từ Injection cho nó biệt lập với từ bỏ "tiêm" trong tiếng Việt nhé.

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

Như trường vừa lòng tiêm dung dịch thì là dùng thuốc ảnh hưởng tác động đến cơ chế tuần trả máu. Và 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ềm thì chính sách này cũng y y như vậy. Nếu hiểu như bên trên thì nguyên tắc này thì vốn siêu simple, chả có gì đặc biệt quan trọng đúng ko nào?

Đi sâu so sánh sâu thêm một chút thì để thực hiện được việc injection không thiếu thì đang cần các đối tượng sau :

Đối tượng đề xuất inject.Lỗ hổng của cơ chế.Cơ chế sẵn có.

Tôi xin phép lấy ví dụ trường hòa hợp tiêm thuốc (1 trong các trường thích hợp của injection) thì vẫn như sau :

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

Ở đây tôi không nói đến kết quả của vấn đề injection bởi vì nói phổ biến mục đích cuối cùng là đã tác động chuyển đổi đến đồ dùng chủ, tác dụng tốt tốt xấu ko bàn sinh sống đây.

Như ví dụ tôi nói trên thì quá trình tiêm dung dịch mọi fan đều không quan tâm đến 1 đối tượng người tiêu dùng rất quan lại trọng, đó là "lỗ hổng" - nói một phương pháp dễ hiểu..

Khi thực hiện tiêm thì sẽ buộc phải tìm lỗ ven huyết mạch đầu tiên. Trường hợp như trên khung hình không có một cái "lỗ" làm sao để rất có thể chọc kim tiêm vào, thì sẽ không còn cách nào ảnh hưởng vào hệ tuần hoàn máu để kết thúc việc tiêm thuốc(injection).

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

Các phần tiếp sau tôi cũng kể đến những "lỗ" hổng này và chúng ta nhớ chăm chú nhé.

II - SQL Injection

SQL Injection thì vào Software Engineering thường kể tới lỗ hổng bảo mật thông tin của phầm mềm cho phép người dùng rất có thể truy nhập thẳng vào cơ sở tài liệu (database) của cả hệ thống nhằm đánh cắp thông tin, hủy hoại hệ thống.

Trước hết dành 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 một hệ thống.

*

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

Đối tượng đề xuất inject: những câu lệnh SQL.Lỗ hổng: các nguồn đầu vào từ người tiêu 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ó: chính sách truy nhập cho cơ sở dữ liệu của hệ thống.

Ví dụ như khi tôi viết blog trên website này. Tôi thay bởi viết ngôn từ blog mà nắm vào đó, thêm các 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 tiền công viết chẳng hạn.

Xem thêm: Tuổi Mậu Dần Mua Xe Màu Gì ? Tuổi Mậu Dần 1998 Hợp Màu Xe Gì

Cũng y hệt như việc tiêm thuốc thôi, thay vì tôi tiêm (inject) thuốc nhằm chữa căn bệnh hay có tác dụng chết tín đồ thì tôi Inject SQL vào hệ thông để chỉnh sửa data của hệ thống hoặc làm chết hệ thống.

Về phương diện bảo mật tin tức khi mà người dùng thoải mái lấy hoặc nuốm data của khối hệ thống thông qua câu hỏi inject các câu lệnh SQL như bên trên là rất 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 bạn thông qua trang web cai quản của công ty.

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

Cho cần về phương diện bảo mật thông tin thì việc kiểm tra, validate những nguồn input này của người dùng làm ngăn ngăn truy nhập thẳng vào là cực kỳ 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 vừa lòng này cho nên 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 cướp quyền kiểm soát điều hành hoặc phá hoại. Về nguyên tắc nó vốn dễ dàng và đơn giản như vấn đề tiêm đã lý giải ở phần I.

III - Dependency Injection

Để phát âm được về bề ngoài Dependency Injection trước hết bạn cần phải hiểu trước về nguyên lý Dependencyinversion. Tuy vậy về Dependencyinversion thì lại là khái niệm hơi loằng ngoằng 1 chút, cơ mà nó vấn solo giản.

Để lý giải tôi bước đầu với lấy ví dụ như sau:

Bạn là ông chủ của công ty, mỗi ngày cứ mang đến chiều về yêu cầu xem lại thông tin tổng kết lợi nhuận của công ty. Và để làm được thư cam kết của các bạn sẽ phải phun mail tổng kết mặt hàng ngày. Tuy nhiên ngày nào chúng ta cũng nên mất công giục các bạn thư ký phải viết report đúng giờ, rồi thời điểm thì cần thông tin này lúc thì cần thông tin kia. Nói phổ biến là công việc của các bạn rất phụ thuộc vào vào chúng ta thư ký.

Thời gian sau đó bạn rút kinh nghiệm sâu sắc, soạn template, ra lý lẽ về thời gian report bắt thư ký đề xuất làm theo. Và sau đó cứ mang đến chiều là bạn xem tin tức tổng kết doanh thu của chúng ta mà không nhất thiết phải giục hay nhờ vào nhiều vào thư ký nữa.

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

Quá trình hòn đảo ngược sự phụ thuộc vào này trong ứng dụng gọi là nguyên lý dependency inversion. Module gọi sẽ đưa ra những phương thức, chính sách để dependency module đề nghị tuân theo khi tiến hành 1 chức năng nào đó của phần mềm.

Như trong lấy ví dụ như trên thì sau thời điểm ra những qui định bên trên thì bạn có thể thay thế bất ký cô thư cam kết nào miễn là thỏa mãn điều kiện report đúng theo template cùng đúng giờ. Diễn giải theo ý nghĩa khác khác bạn có thể inject bất kỳ cô thư ký kết nào vào phương pháp xem lại tin tức tổng kết lợi nhuận của công ty.

*

Khái quát lác thêm chút thì một cô thư ký bất kỳ gọi là 1 trong sự dựa vào (dependency) trong qui định 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 hotline là Dependency Injection.

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

Đối tượng nên inject: thư ký.Lỗ hổng: những quy định về template, ngày giờ báo cáo dành cho 1 thư ký kết bất kỳ.Cơ chế sẵn có: bài toá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 chính sách nó vãn như trên. Trong một trong những phần mềm thì thường xuyên được thiết kế tạo thành nhiều các thành phần nhỏ dại gọi là các module/class. Những module/class hay sẽ điện thoại tư vấn nhau để thực hiện 1 tác dụng của phần mềm.

Ví dụ: như khi người dùng login vào trang web này ví dụ điển hình thì thường sẽ có ít duy nhất 2 module sau call nhau bao gồm:

Module thiết yếu (làm trọng trách login, chuẩn xác username/password).Module tầm nã nhập vào các đại lý dữ liệu.

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

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

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

Ví dụ như trong cách thức login, dependency module vẫn cần cung ứng cácinteface bao gồm phương thức để khám nghiệm username, password trong database.

Các đối tượng trong bài toán injection của nguyên lý login bao gồm :

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

Xem thêm: Cây Hoa Trà ( Camellia Là Gì, Ý Nghĩa Và Những Công Dụng Cực Tốt Của Hoa Trà

Kết luận

Cơ chế Dependency Injection này cực kỳ có ý nghĩa sâu sắc trong vấn đề phát triển ứng dụng khai mà các đội vào dự án cách tân và phát triển song tuy nhiên các module, unit thử nghiệm hoặc việc bảo trì thay đổi, không ngừng mở rộng source code của module này nhưng không bị tác động đến module khác.

Như tôi đang ví dụ mang đến trường vừa lòng sếp cùng thư cam kết ở trên thì các bạn cũng có thể thấy cơ Dependency Injection này cực kỳ có ý nghĩa ngay cả vào đời sống cần không?

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

Nếu phát âm rồi thì nhớ like và giới thiệu nhé nhằm tôi còn có động lực viết những blog không giống :)