Injection Là Gì

     

Trong cách tân và phát triển phần mềm, các bạn thường tuyệt nghe đến những khái niệm Dependency Injection, SQL Injection, etc nhưng không hiểu nhiều nó như vậy nào.Bạn đang xem: Inject là gì

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

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

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

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

I. Injection là gì?

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

Injection dịch nai lưng 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 quả của việc tiêm này thì hoàn toàn có thể mang lại hiệu ứng tốt hoặc xấu tùy vào mình 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ù ở Việt Nam hay là một số nước trên núm giới.

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

Tuy nhiên ví dụ làm việc trên là tôi đang nói tới việc tiêm thuốc dịch nai lưng tiếng anh là Vaccine Injection. Nó chỉ là 1 trong những trường hòa hợp của Injection trong tiếng Anh thôi.

Thật ra Injection trong tiếng Anh thì có thể tiêm (injection) rất nhiều các loại khác kế bên 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 giờ đồng hồ việt giảm bớt nên tín đồ ra dịch là tiêm, và chỉ gồm từ tiêm dung dịch là bản đồ với injection cần mọi bạn chỉ nghĩ mang lại là câu hỏi tiêm thuốc. Cùng hiện chưa tồn tại từ làm sao để map với từ bỏ injection này nên làm cho mọi bạ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 tiếng Anh). Nói chung việc phối giống mang lại gà hay thụ tinh ở tín đồ thì giờ anh cũng có thể gọi là 1 quá trình injection do tác động ảnh hưởng vào lý lẽ sinh sản bao gồm sẵn.

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

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

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

Ở trong cải cách và phát triển phầm mượt thì bề ngoài này cũng y y hệt như vậy. Nếu hiểu như bên trên thì qui định này thì vốn cực kỳ simple, chả bao gồm gì đặc biệt quan trọng đúng ko nào?

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

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

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

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

Ở đây tôi ko nói đến hiệu quả của câu hỏi injection vị nói tầm thường mục đích ở đầu cuối là đang tác động thay đổi đến vật chủ, công dụng tốt tuyệt xấu ko bàn ngơi nghỉ đây.

Như lấy ví dụ tôi nói ở trên thì quy trình tiêm dung dịch mọi người đều không quan tâm đến 1 đối tượng người tiêu dùng rất quan liêu 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ẽ cần tìm lỗ ven quan trọng đầu tiên. Giả dụ như trên cơ thể không có một cái "lỗ" nào để có thể chọc kim tiêm vào, thì sẽ không cách nào tác động vào hệ tuần trả máu để xong xuôi việc tiêm thuốc(injection).

Và trong những khái niệm về Injection trong Software Engineering thì loại "lỗ" cũng tương đối quan trọng, và bao giờ bắt đầu việc injection thì bạn ta vẫn cần tìm tới cái "lỗ" trước tiên như việc bắt đầ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ú ý nhé.

II - SQL Injection

SQL Injection thì trong Software Engineering thường nói đế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 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 cắp thông tin, phá hủy hệ thống.

Trước hết giành cho ai không biết, SQL ở đó 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 bởi inject dung dịch thì rất có thể inject các câu lệnhSQL từ bên ngoài thông qua vẻ ngoài truy nhập cơ sở tài liệu của phần mềm. Các đối tượng người tiêu dùng trong vấn đề injection này bao gồm :

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

Cũng y như việc tiêm thuốc thôi, thay do tôi tiêm (inject) thuốc nhằm chữa bệnh dịch hay làm chết tí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 chết hệ thống.

Xem thêm: Nhận Định Akgae Là Gì ? Đây Là Một Nhận Định Akgae, Sasaeng, Fan Only, Fanti, Non

Về khía cạnh bảo mật tin tức khi mà người dùng dễ chịu lấy hoặc núm data của hệ thống thông qua vấn đề 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 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 làm chủ của công ty.

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

Cho cần về mặt bảo mật tin tức thì vấn đề kiểm tra, validate những 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à 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 thì là inject các câu lệnh hotline đến hệ điều hành của hệ thống nhằm chiếm quyền kiểm soát điều hành hoặc phá hoại. Về nguyên lý nó vốn đơn giản và dễ dàng như bài toán tiêm đã lý giải ở phần I.

III - Dependency Injection

Để phát âm được về cơ chế 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à quan niệm hơi loằng ngoằng 1 chút, nhưng nó vấn 1-1 giản.

Để giải thích tôi bước đầu với ví dụ như sau:

Bạn là ông công ty của công ty, từng ngày cứ cho chiều về nên xem lại tin tức tổng kết lợi nhuận của công ty. Và để triển khai được thư ký của bạn sẽ phải bắn mail tổng kết hàng ngày. Tuy nhiên ngày nào bạn cũng phải mất công giục bạn thư ký yêu cầu viết báo cáo đúng giờ, rồi cơ hội thì cần thông tin này thời gian thì cần thông tin kia. Nói tầm thường là quá trình của các bạn rất phụ thuộc vào vào bạn thư ký.

Thời gian kế tiếp bạn rút kinh nghiệm tay nghề sâu sắc, biên soạn template, ra pháp luật về thời gian báo cáo bắt thư ký bắt buộc làm theo. Và tiếp đến cứ mang đến chiều là các bạn xem tin tức tổng kết doanh thu của người tiêu dùng mà không cần thiết phải giục hay phụ thuộc nhiều vào thư cam kết nữa.

Như vậy liệu có phải là sự dựa vào vào các bạn thư ký đã bị đảo ngược đúng không? chúng ta thư ký kết sẽ buộc phải tuân theo các điều kiện mà chúng ta qui định núm vì các bạn phải đuổi 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 tắc dependency inversion. Module điện thoại tư vấn sẽ chuyển ra các phương thức, chính sách để dependency module đề nghị tuân theo khi thực hiện 1 tính năng nào đó của phần mềm.

Như trong ví dụ trên thì sau khi ra những qui định trên thì chúng ta có thể thay nỗ lực bất ký cô thư ký kết nào miễn là thỏa mãn nhu cầu điều kiện báo cáo đúng theo template cùng đúng giờ. Diễn đạt theo ý riêng khác chúng ta cũng có thể inject ngẫu nhiên cô thư ký kết nào vào hình thức xem lại tin tức tổng kết lợi nhuận của công ty.


*

Khái quát mắng thêm chút thì một cô thư ký ngẫu nhiên gọi là một sự nhờ vào (dependency) trong bề ngoài xem lại tin tức tổng kết lợi nhuận của công ty.

Cơ chế nhưng mà injectDependency trên gọi là Dependency Injection.

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

Đối tượng đề xuất 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ó: việc xem lại thông tin tổng kết doanh thu của công ty.

Thế còn về Software enginering thì sao? thật ra vẻ ngoài nó vãn như trên. Trong 1 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 bé dại gọi là các module/class. Các module/class thường xuyên sẽ gọi nhau để triển khai 1 chức năng của phần mềm.

Ví dụ: như khi người dùng login vào website này ví dụ điển hình thì thường sẽ sở hữu được ít tốt nhất 2 module sau hotline nhau bao gồm:

Module chủ yếu (làm trọng trách login, bảo đảm username/password).Module tróc nã nhập vào cơ sở dữ liệu.

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

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

Cụ thể lỗ hổng được tạo nên ở đó là các phương thức, lý lẽ mà dependency module đề nghị phải hỗ trợ cho nguyên lý gọi mang đến nó. Trong software kiến thiết thì hotline là interface qui định các phương thức giữa 2 module.

Ví dụ như trong phương pháp login, dependency module đã cần cung ứng cácinteface bao hàm phương thức để chất vấn username, password vào database.

Các đối tượng người sử dụng trong việc injection của hiệ tượng login bao gồm :

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

Xem thêm: Tuesday Là Gì - 4 Điều Cần Lưu Ý Để Đối Phó Tuesday

Kết luận

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

Như tôi đang ví dụ đến trường đúng theo sếp và thư cam kết ở bên trên thì các chúng ta cũng có thể thấy cơ Dependency Injection này cực kỳ có ý nghĩa ngay cả vào đời sống đề nghị không?

Khái niệm Dependency Injection này vẫn đơn giản và dễ dàng như bài toán tiêm thuốc đúng không?

Nếu gọi rồi thì nhớ like và tóm tắt nhé để tôi còn tồn tại động lực viết những blog khác :)